数据库连接池

 数据库连接池

What 

数据库连接池是分配,管理,释放数据库连接的池子

 

why

应用程序 可重复使用,不用重新建,数据库连接是一种昂贵的资源,消耗性能大,所以需要重用,所以需要用到数据库连接池

 

建一个类,实现接口 定义三个方法


1. init()初始化资源,

2. 获取连接getConnection

3. 关闭资源(关闭连接)

 

数据库连接池的具体实现

 

//数据库连接池
private static final LinkedList<Connection> pools=new LinkedList<Connection>();
private MySQLConnection mySQLConnection=new MySQLConnection();
/**
*
* 自定义的这个数据库连接池实际上是用集合结构来存储的,
* 集合中可以存储很多数据库连接对象
*/

 

//初始化连接的资源并放入数据库连接池中
public void init() {
Connection conn=null;
for (int i=0;i<minConnection;i++){
conn=mySQLConnection.buildConnection();
pools.add(conn);
}
}

/**
* 当我们需要使用连接时,连接池中若没有连接,则我们创建一个新的连接,
* 若连接池中有连接,则直接从连接池中获取连接
*/
//synchronized 同步锁 解决并发(线程不安全),弊端
public synchronized Connection getConnection() {
Connection conn=null;
if (pools.size()==0){
conn=mySQLConnection.buildConnection();
}else{
//重点理解这个remove方法
//pools.get(0);
//移除该下标对应的对象,且返回该对象;
conn=pools.remove(0);
}
return conn;
}

/**
* 连接使用完毕后再返回到数据库连接池中
* 回收
*/
public synchronized void closeConnection(Connection conn) {
if(pools.size()<maxConnection){
pools.add(conn);
}

}
}

posted @ 2020-09-09 19:31  十二cs  阅读(113)  评论(0)    收藏  举报