数据库连接池的实现及分析

为了减轻服务器压力  避免每次访问数据库都要建立一个对数据库的连接,因此数据库连接池是最好的一个功能。

数据库连接池编写原理分析。

1.编写连接池需要实现javax.sql.DataSource接口。

DataSource接口中定义 了两个重载的getConnection方法。

1)Connection   getConnection()

2)Connection getConnection(String username,String password)

2.实现DataSource接口,并实现连接池功能的步骤

1)在DataSource构造函数中批量创建与数据库的连接,并把创建的连接保存到一个集合对象中。

2)实现getConnection 方法。让getConnection()每次调用时,从集合对象中取一个Connection返回给用户。

3)当用户使用完Connection,调用Connection.close()方法时,Collection对象应保证将自己返回到连接池的集合对象中。而不要把conn还给数据库。

具体步骤如下

1.编写class实现DataSource接口

public class Test implements DataSource{

2.在class构造器中一次性创建多个连接

public  Test(){
  //一次性创建十个连接
  for(int i=0;i<10;i++){
  try{
  Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/day14","root","wdl03707552882");
  //将连接加入连接池
  datasource.add(con);
  }
  catch(Exception e){
  e.printStackTrace();
  }
  }

3.实现getConnection从LinkedList中返回一个连接

public Connection getConnection() throws SQLException {
//取出连接池中的一个连接
Connection con=datasource.removeFirst();//删除第一个连接  并且返回
//取出一个连接对象放到所需要的对象中。
System.out.println("此时连表中有"+datasource.size()+"个");

return con;
}

4.提供将连接放回到连接池中的方法。

public void realeaseCon(Connection con){
datasource.add(con);
System.out.println("将连接放回到连接连表中此时连表中有"+datasource.size()+"个连接对象");
}


注意:一般用户会习惯用con.close()方法进行关闭连接,而不是调用datasource.release()方法,那么将破坏连接池。

那么现在有一种方法可以通过即使用户使用close也可以把数据库连接池连表的对象放回到连接池中。那么就可以修改close方法的逻辑。

有三种途径可以增强原有方法。












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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uniquewdl

匆忙的人生,总有你喜欢的文章

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值