DBCP连接池


   DBCP  是 Apache  软件基金组织下的开源连接池实现,使用 DBCP 数据源,应用程序应在系统中增加如下两个 jar  文件:


 Commons-dbcp.jar :连接池的实现

       Commons-pool.jar :连接池实现的依赖库



  



Tomcat  的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用,也可由应用程序独立使用。






核心类:BasicDataSource

使用步骤



引入 jar 文件
commons-dbcp-1.4.jar​​​点击打开链接​​​commons-pool-1.5.6.jar​​点击打开链接​​






DBCP连接池的实现



package com.cn.dbcp;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.junit.Test;
public class DbcpTest {

/**
* 1. 硬编码方式实现连接池
* @throws Exception
*/
@Test
public void testDbcp() throws Exception {
//DBCP连接池核心类
BasicDataSource dataSource = new BasicDataSource();

//连接池参数配置,初始化连接数,最大连接数
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");//数据库连接url
dataSource.setDriverClassName("com.mysql.jdbc.Driver");//数据库驱动
dataSource.setUsername("root");//数据库连接用户
dataSource.setPassword("root");//数据库连接密码
dataSource.setInitialSize(3);//初始化连接数
dataSource.setMaxActive(6);//最大连接数
dataSource.setMaxIdle(3000);//最大空闲时间

//获取连接
Connection conn = dataSource.getConnection();
dataSource.getConnection();
dataSource.getConnection();
conn.prepareStatement("delete from users where id = 13").execute();

//关闭
conn.close();
}

/**
* 2. 配置方式实现连接池
* @throws Exception
*/
@Test
public void testDbcpProperties() throws Exception {

//加载Properties配置文件
Properties properties = new Properties();
//类加载方式获取配置文件流
InputStream in = this.getClass().getResourceAsStream("db.properties");
//加载文件流
properties.load(in);
DataSource dataSource = BasicDataSourceFactory.createDataSource(properties);

//获取连接
Connection conn = dataSource.getConnection();
conn.prepareStatement("delete from users where id = 11").execute();

//关闭
conn.close();
}
}



DBCP连接池的配置文件db.properties:



url=jdbc:mysql://localhost:3306/mydb
driverClassName=com.mysql.jdbc.Driver
username=root
password=root
initialSize=3
maxActive=6
maxIdle=3000



注意:



配置方式实现DBCP连接池。配置文件中的key与BaseDataSource中的属性一样。