数据库连接池


频繁的连接和释放操作是一个非常耗时耗资源的行为,当并发访问数量较大时,执行速度受到极大影响,所以预先同数据库建立一些连接,放在内存中.应用程序需要建立数据库连接时直接从该内存中申请一个,用完后再放回去

DBCP

DataBase-Connection-Pool数据库连接池,是java数据库连接池的一种,由Apache开发,通过数据库连接池,可以让程序自动管理数据库连接的释放和断开。没有自动回收空闲连接的功能

在ojdbc.jar和commons-dbutil.jar基础上导入commons-dbcp.jar,commons-pool.jar

与JDBC不同的是工具类DB.class,修改getConn方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//连接池
public void getConn() {
try {
//数据源头
BasicDataSource bds = new BasicDataSource();
//设置数据库的四个参数
bds.setDriverClassName(driver);
bds.setUrl(url);
bds.setUsername(name);
bds.setPassword(pwd);
//通过数据源获得连接对象
conn = bds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}

C3P0

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。有自动回收空闲连接功能

在ojdbc.jar和commons-dbutil.jar基础上导入c3p0-0.9.1.2.jar

与JDBC不同的是工具类DB.class,修改getConn方法

1
2
3
4
5
6
7
8
9
10
11
12
13
// 连接池
public void getConn() {
try {
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass(driver);
cpds.setJdbcUrl(url);
cpds.setUser(name);
cpds.setPassword(pwd);
conn = cpds.getConnection();
} catch (PropertyVetoException | SQLException e) {
e.printStackTrace();
}
}

Druid

德鲁伊,阿里出品,淘宝和支付宝专用数据库连接池,Druid是目前最好的数据库连接池.

在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource.

Druid已经在阿里巴巴部署了超过600个应用,经过了严苛的考验.

在ojdbc.jar和commons-dbutil.jar基础上导入druid-1.1.x.jar

与JDBC不同的是工具类DB.class,修改getConn方法

1
2
3
4
5
6
7
8
9
10
11
12
// 连接池
public void getConn() {
try {
DruidDataSource dds = new DruidDataSource();
dds.setUrl(url);
dds.setUsername(name);
dds.setPassword(pwd);
conn = dds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}

配置文件的详细规则


总结