开源的连接池技术(DBCP)
Sun公司约定: 如果是连接池技术,需要实现一个接口!
javax.sql.DataSource;
现有开源连接池:DBCP 、C3P0
DBCP连接池
- DBCP 是 Apache 软件基金组织下的开源连接池实现,使用DBCP数据源,应用程序应在系统中增加如下两个 jar 文件:
• Commons-dbcp.jar:连接池的实现
• Commons-pool.jar:连接池实现的依赖库 - Tomcat 的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用,也可由应用程序独立使用。
- 核心类:BasicDataSource
引入jar文件
/**
* 硬编码方式实现连接池
*/
@Test
public void testDS() throws SQLException{
// DBCP 连接池核心类
BasicDataSource dataSource = new BasicDataSource();
// 连接池参数配置
dataSource.setUrl("jdbc:mysql:///test");
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUsername("root");
dataSource.setPassword("root");
dataSource.setInitialSize(3); // 初始化连连接数
dataSource.setMaxActive(6); // 最大连接
dataSource.setMaxIdle(3000); //
// 获取连接
Connection con = dataSource.getConnection();
String sql = "delete from stu where id=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, 1);
ps.executeUpdate();
// 关闭
ps.close();
con.close();
}
/**
* 配置方式实现连接池
* 依据property配置文件,创建数据源对象
* @throws Exception
*/
@Test
public void testDataSource() throws Exception{
// 加载prop对象
Properties prop = new Properties();
// 获取文件流
InputStream in = this.getClass().getResourceAsStream("ds.properties");
// 加载配置文件
prop.load(in);
// 根据配置文件,直接创建数据源对象、
DataSource dataSource = new BasicDataSourceFactory().createDataSource(prop);
// 获取连接
Connection con = dataSource.getConnection();
String sql = "insert into stu(id,name) values(?,?)";
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, 1);
ps.setString(2, "tom");
ps.executeUpdate();
// 关闭
ps.close();
con.close();
}
ds.properties
url=jdbc:mysql:///test
driverClassName=com.mysql.jdbc.Driver
username=root
password=root
initialSize=3
maxActive=6
maxIdle=3000