跳过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;
}
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;
}
相关文章推荐
- JDBC实例--通过连接工具类DBUtil +配置文件来获取连接数据库,方便又快捷
- hibernate入门第五课 通过Hibernate API编写访问数据库代码并使用junit进行单元测试
- 通过 Hibernate API 编写访问数据库的代码
- hibernate 通过API访问数据库
- 深入学习Hibernate4_03-通过 Hibernate API 访问数据库
- 通过JDBC API访问数据库的jsp范例
- JAVA通过JDBC链接数据库获取数据(二)单元测试增删改查
- 通过JDBC访问数据库元信息
- hibernate课程 初探单表映射1-11 通过hibernate API访问编写第一个小例子
- 直接通过 ODBC API 访问 SQL 数据库
- 如何通过JDBC访问数据库
- 通过JDK API 获取数据库元数据(反射数据库)
- 一种通过jdbc获取数据库结构的方法
- JDBC:通过 DriverManager 获取数据库连接
- Hibernate、SpringJDBC中在注解模式下获取数据库连接
- JAVA通过JDBC链接数据库获取数据(一)
- JAVA通过JDBC链接数据库获取数据(三)PreparedStatement预编译SQL
- 1.通过原始的Driver接口获取JDBC数据库连接Connection
- 2.通过原始的Driver接口通过读取Properties属性文件获取JDBC数据库连接Connection
- JDBC 通过从properties配置文件获取信息得到orcale数据库接口