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

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

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

2、通过存储过程

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

 

  1. tx = session.beginTransaction();
  2. Connection con=session.connection();

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

 

  1. hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver
  2. hibernate.connection.url=jdbc:oracle:thin:@192.168.2.11:1521:oracle
  3. hibernate.connection.username=db_test
  4. hibernate.connection.password=test
  5. hibernate.show_sql=true

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

  1. package com.***.***.util;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.IOException;
  5. import java.net.URL;
  6. import java.sql.Connection;
  7. import java.sql.DriverManager;
  8. import java.sql.SQLException;
  9. import java.util.Properties;
  10. public class DBConnection {
  11.     
  12.      public  Connection getConnection() {
  13.           
  14.           Properties properties = new Properties(); 
  15.           URL in = this.getClass().getClassLoader().getResource("jdbc.properties");
  16.         try {
  17.             properties.load(new FileInputStream(in.getFile()));
  18.         } catch (FileNotFoundException e1) {
  19.             // TODO Auto-generated catch block
  20.             e1.printStackTrace();
  21.         } catch (IOException e1) {
  22.             // TODO Auto-generated catch block
  23.             e1.printStackTrace();
  24.         } 
  25.          String driver =properties.getProperty("hibernate.connection.driver_class");
  26.          String  url=properties.getProperty("hibernate.connection.url");
  27.          String user=properties.getProperty("hibernate.connection.username");
  28.          String password=properties.getProperty("hibernate.connection.password");
  29.         Connection con;
  30.         try{
  31.         
  32.         Class.forName(driver);
  33.         con=DriverManager.getConnection(url,user,password);
  34.         return con;
  35.         }catch (ClassNotFoundException e){
  36.         System.out.println(e.getMessage());
  37.         }catch (SQLException e){
  38.         System.out.println(e.getMessage());
  39.         }
  40.         return null;
  41.       }
  42. }

要想获取Connection,只需要

  1. DBConnection db = new DBConnection();
  2. Connection conn = db.getConnection();

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

  1. //serviceImpl中的一个方法
  2. public boolean addForm(String code,String name,String content)throws MailException{
  3.         DBConnection db = new DBConnection();
  4.         Connection conn = db.getConnection();
  5.         try {
  6.             conn.setAutoCommit(false);
  7.             String queryStr = "insert into form(code,name,content)values(?,?,?)";
  8.             PreparedStatement pstm = conn.prepareStatement(queryStr);
  9.             pstm.setString(1,code);
  10.             pstm.setString(2,name);
  11.             Reader clobReader = new StringReader(content); // 将 text转成流形式
  12.             pstm.setCharacterStream(3, clobReader, content.length());// 替换sql语句中的           
  13.             pstm.executeUpdate();
  14.             conn.commit();
  15.         } catch (SQLException e) {
  16.             // TODO 自动生成 catch 块
  17.             e.printStackTrace();
  18.             return false;
  19.         }finally{
  20.             if(conn!=null){
  21.                 try {
  22.                     conn.close();
  23.                 } catch (SQLException e) {
  24.                     // TODO 自动生成 catch 块
  25.                     e.printStackTrace();
  26.                 }
  27.             }
  28.         }
  29.         return true;
  30.         
  31.     }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值