1、简介
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
2、为什么要用连接池
如果按照单个连接来进行数据库操作,在高并发的情况下会导致数据库连接数耗尽的问题,而且单个连接的频繁创建和关闭,极大地增加了数据库的开销。针对这些,数据库连接池技术就能很好的解决这些问题。
3、实现
定义连接对象
import java.sql.Connection;
/**
*
*/
public class PoolConnection {
private Connection connect;
//false 繁忙,true 空闲
private boolean status;
public PoolConnection() {
}
public PoolConnection(Connection connect, boolean status) {
this.connect = connect;
this.status = status;
}
public Connection getConnect() {
return connect;
}
public void setConnect(Connection connect) {
this.connect = connect;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
//释放连接池中的连接对象
public void releaseConnect(){
this.status = true;
}
}
定义一个接口获取连接对象
public interface DataSource {
PoolConnection getDataSource();
}
实现类
public class DataSourceImpl implements DataSource {
private ReentrantLock lock = new ReentrantLock();
//定义连接池中连接对象的存储容器
private List list = Collections.synchronizedList(new LinkedList<>());
//定义数据库连接属性
private final static String DRIVER_CLASS = PropertiesUtils.getInstance().getProperty("jdbc.driver_class");
private final static String URL = PropertiesUtils.getInstance().getProperty("jdbc.url");
private final static String USERNAME = PropertiesUtils.getInstance().getProperty("jdbc.username");
private final static String PAS