您的位置:首页 > 数据库

跳过hibernate获取DBConnection工具类,通过JDBC API访问数据库

2008-10-21 14:52 579 查看
在系统中利用hibernate的API我们可以做很多事情,数据的读,存,删等,都比较的方便,但是如批量添加、更新、删除操作,量大的话会严重影响系统的性能,有两个算是比较好的办法解决。

1、直接通过JDBC API来执行该SQL语句

2、通过存储过程

在这两个操作中首先都要得到Connection,当然这也可以通过

tx = session.beginTransaction();

Connection con=session.connection();

来得到,在我现在使用的一个系统中是hibernate与spring的整合。通过一个.properties文件的配置来得到与数据库的连接。文件如下:

hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver

hibernate.connection.url=jdbc:oracle:thin:@192.168.2.11:1521:oracle

hibernate.connection.username=db_test

hibernate.connection.password=test

hibernate.show_sql=true

在此我们也是要利用这个属性文件来写一个DBConnection类来获取JDBC的连接。DBConnection类如下:

package com.***.***.util;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.net.URL;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.util.Properties;

public class DBConnection {

public Connection getConnection() {

Properties properties = new Properties();

URL in = this.getClass().getClassLoader().getResource("jdbc.properties");

try {

properties.load(new FileInputStream(in.getFile()));

} catch (FileNotFoundException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

} catch (IOException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

String driver =properties.getProperty("hibernate.connection.driver_class");

String url=properties.getProperty("hibernate.connection.url");

String user=properties.getProperty("hibernate.connection.username");

String password=properties.getProperty("hibernate.connection.password");

Connection con;

try{

Class.forName(driver);

con=DriverManager.getConnection(url,user,password);

return con;

}catch (ClassNotFoundException e){

System.out.println(e.getMessage());

}catch (SQLException e){

System.out.println(e.getMessage());

}

return null;

}

}

要想获取Connection,只需要

DBConnection db = new DBConnection();

Connection conn = db.getConnection();

接下来的操作就是普通的JDBC操作了。以下是一段参考代码:

//serviceImpl中的一个方法

public boolean addForm(String code,String name,String content)throws MailException{

DBConnection db = new DBConnection();

Connection conn = db.getConnection();

try {

conn.setAutoCommit(false);

String queryStr = "insert into form(code,name,content)values(?,?,?)";

PreparedStatement pstm = conn.prepareStatement(queryStr);

pstm.setString(1,code);

pstm.setString(2,name);

Reader clobReader = new StringReader(content); // 将 text转成流形式

pstm.setCharacterStream(3, clobReader, content.length());// 替换sql语句中的

pstm.executeUpdate();

conn.commit();

} catch (SQLException e) {

// TODO 自动生成 catch 块

e.printStackTrace();

return false;

}finally{

if(conn!=null){

try {

conn.close();

} catch (SQLException e) {

// TODO 自动生成 catch 块

e.printStackTrace();

}

}

}

return true;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: