Apache DBCP
以这种方式创建数据源必须先准备两个jar文件:commons-dbcp.jar
和commons-pool.jar
,将这两个jar包放到WEB-INF/lib
目录下。以这种方式创建的数据源就不再是javax.sql.DataSource
了,而是org.apache.commons.dbcp.BasicDataSource
。而且不再需要配置任何文件就可以直接使用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 创建BasicDataSource对象
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/[实例名]");
ds.setUsername("[用户名]");
ds.setPassword("[密码]");
//指定数据库连接池中初始化连接数的个数
ds.setInitialSize(50);
//指定最大的连接数: 同一时刻可以同时向数据库申请的连接数
ds.setMaxActive(100);
//指定最大连接数: 在数据库连接池中保存的最大的空闲连接的数量
ds.setMaxIdle(30);
//指定最小连接数:在数据库连接池中保存的最小的空闲连接的数量
ds.setMinIdle(5);
//指定等待时间:等待数据库连接池中给分配的连接,等待时间,超过之后会报异常
ds.setMaxWait(10000);//毫秒单位
// 关闭数据源连接
ds.close();
C3P0
使用C3P0方式创建数据源应该首先准备一个jar文件:c3p0-0.9.1.2.jar
,将其放到WEB-INF/lib
目录下,就可以在项目中使用C3P0创建数据源了,C3P0创建的数据源对象也不是DataSource
对象,而是ComboPooledDataSource
。
1
2
3
4
5
6
7
8
9
// 创建ComboPooledDataSource对象
ComboPooledDataSource ds = new ComboPooledDataSource();
ds.setDriverClass("com.mysql.jdbc.Driver");
ds.setJdbcUrl("jdbc:mysql://localhost:3306/[实例名]");
ds.setUser("[用户名]");
ds.setPassword("[密码]");
ds.setInitialPoolSize(50);
ds.setMaxPoolSize(100);
ds.setMaxIdleTime(10000);
Proxool
采用该方式创建数据源需要准备的jar包:proxool-01.9.0RC3.jar
,将其放到WEB-INF/lib
目录下,之后就可以项目中创建ProxoolDataSource
对象。
1
2
3
4
5
6
// 创建ProxoolDataSource对象
ProxoolDataSource ds = new ProxoolDataSource();
ds.setDriver("com.mysql.jdbc.Driver");
ds.setDriverUrl("jdbc:mysql://localhost:3306/[实例名]");
ds.setUser("[用户名]");
ds.setPassword("[密码]");
BoneCP
BoneCP是一个快速高效,开源免费的Java数据库接池。创作者称,BoneCP在性能上会完全超越所有主流的Java连接池。它可以帮你管理数据连 接,让你的应用程序能更快速地访问数据库。比C3P0/DBCP连接池快25倍。这个数据库连接池采用Google Collection作为内部的集合类框架,而且现在的版本已经很稳定。要使用BoneCP,必须用到的jar文件有:
1
2
3
4
5
bonecp-0.6.5.jar
google-collections-1.0.jar
slf4j-api-1.5.11.jar
slf4j-log4j12-1.5.11.jar
log4j-1.2.15.jar
将这些jar包放到WEB-INF/lib
目录下,就可以在程序中创建BoneCPDataSource
对象。
1
2
3
4
5
6
7
8
9
10
11
12
// 创建BoneCPDataSource对象
BoneCPDataSource ds = new BoneCPDataSource();
ds.setDriverClass("com.mysql.jdbc.Driver");
ds.setJdbcUrl("jdbc:mysql://localhost:3306/[实例名]");
ds.setUsername("[用户名]");
ds.setPassword("[密码]");
ds.setAcquireIncrement(1);
ds.setAcquireRetryDelay(10000);
ds.setIdleConnectionTestPeriod(100);
ds.setMinConnectionsPerPartition(2);
ds.setMaxConnectionsPerPartition(20);
ds.setPartitionCount(2);