Connection连接池

去数据库获取数据的时候都要建立一个Connection去获取数据,建立Connection是比较 耗时的操作,而且当你用完的时候又要关闭,使用的时候又再去建立,整个过程走下来耗费的时间就会相对较多了,那么连接池就能很好节省建立Connection消耗的时间。
下面讲述是建立连接池的以及使用的步骤

  1. 建立一个List集合,List集合放的就是我们的Connection(我们可以在项目初始化的时建立多个Connection存入List集合中)

  2. 获取Connection:直接在List集合获取Connection,这时候就不用在花时间去建立Connection了,直接在List集合中拿来用,需要注意的是拿从List集合拿出后,需要在List集合中移除掉,避免多线程造成的安全隐患。

  3. 关闭Connection:其实是假关闭,为什么这样说呢!我给大家解释以下所谓的假关闭:条件:我只想这个List集合的大小是小于50的。如果现在List集合的大小是小于50的我就把Connection对象添加到集合里面,不关闭。如果大于50就真的关闭。

          /** 
    
    1.  * 连接池 
      
    2.  */  
      
    3.  private static List<Connection> listCon=new ArrayList<Connection>();   
      
    4. /** 
      
    5.  *  
      
    6. * @return Connection 获取Connection连接 
      
    7. */  
      
    8. public static Connection getConnection() {  
      
    9. int i=listCon.size()-1;  
      
    10. Connection con=listCon.get(i);  
      
    11. listCon.remove(i);  
      
    12. return con;  
      
    13. }  
      
    14. /** 
      
    15. * 关闭ResultSet对象、 Statement对象 
      
    16. *  Connection对象如果连接池没满就放进连接池,超过则关闭 
      
    17. * @param rs   ResultSet对象 
      
    18. * @param ps   Statement对象 
      
    19. * @param con  Connection对象 
      
    20. */  
      
    21. public static void getClose(ResultSet rs, PreparedStatement ps,  
      
    22.     Connection con) {  
      
    23. try {  
      
    24.     if (rs != null) {  
      
    25.         rs.close();  
      
    26.     }  
      
    27.     if (ps != null) {  
      
    28.         ps.close();  
      
    29.     }  
      
    30.     if(listCon.size()>conf.getPoolMaxSize()){  
      
    31.         con.close();  
      
    32.     }else{  
      
    33.         if (con != null) {  
      
    34.             listCon.add(con);  
      
    35.         }  
      
    36.     }  
      
    37. } catch (SQLException e) {  
      
    38.     // TODO Auto-generated catch block  
      
    39.     e.printStackTrace();  
      
    40. }  
      
    41. }  
      

总结:做了个测试,没建立连接池后使用查询的时间是建立连接池后使用查询的时间的大概是3倍以上。(例: 查询学生表100边
从连接池获取Connection 所花费时间是:670毫秒
直接新建Connection 所花费时间是:2673毫秒)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值