DBCP数据源

DBCP 是 Apache 软件基金组织下的开源连接池实现,该连接池依赖该组织下的另一个开源系统:Common-pool. 如需使用该连接池实现,应在系统中增加如下两个 jar 文件:

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

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

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

 

初次简单使用(先爽一把)

import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
public class DBCP {
public static void main(String[] args) throws SQLException {
//1、创建DBCP数据源实例
BasicDataSource dataSource = new BasicDataSource();
//2、为数据源实例指定必要的属性
dataSource.setUsername("root");
dataSource.setPassword("123");
dataSource.setUrl("jdbc:mysql://localhost:3306/hubeiedu?useUnicode=true&characterEncoding=utf8");
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
 
//3、指定数据源的一些可选的属性
//(1) 指定数据库连接池中初始化连接数的个数
dataSource.setInitialSize(10);
//(2) 指定最大的连接数:同一时刻可以同时向数据库申请的连接数
dataSource.setMaxActive(50);
//(3) 指定最小连接数:在数据库连接池中保存的最少的空闲连接的数量
dataSource.setMinIdle(5);
//(4) 等待数据库连接池分配链接的最长时间,单位为毫秒,超过该时间抛异常
dataSource.setMaxWait(1000 * 5);
 
//4、从数据源中获取数据库连接
Connection connection = dataSource.getConnection();
System.out.println(connection);
}
 
}

打印出:

 

dbcp多数据源 java 配置validation 使用dbcp数据源要导入啥jar包_Source

 

数据源和数据库连接不同,数据源无需创建多个,它是产生数据库连接的工厂,因此整个应用只需要一个数据源即可。

当数据库访问结束后,程序还是像以前一样关闭数据库连接:conn.close(); 但上面的代码并没有关闭数据库的物理连接,它仅仅把数据库连接释放,归还给了数据库连接池。

 

升级版

DBCP.java
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
 
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
 
public class DBCP {
public static void main(String[] args) throws Exception {
 
Properties properties = new Properties();
InputStream inputStream = new DBCP().getClass().getResourceAsStream("dbcp.properties");
properties.load(inputStream);
DataSource dataSource = BasicDataSourceFactory.createDataSource(properties);
Connection conn = dataSource.getConnection();
 
System.out.println(conn);
}
 
}
 
dbcp.properties
username=root
password=123
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/hubeiedu?useUnicode=true&characterEncoding=utf8
initialSize=10
maxActive=50
minIdle=5
maxWait=5000

 

dbcp.proerties里面的属性就是简单版的dataSource.setXXX()后面的XXX的小写。

 

检测:

设置初始化连接数为5,最大连接数为5,最长等待时间为5秒

 

dbcp多数据源 java 配置validation 使用dbcp数据源要导入啥jar包_java_02

第六个等待五秒后报错

dbcp多数据源 java 配置validation 使用dbcp数据源要导入啥jar包_java_03

使用多线程释放

 

dbcp多数据源 java 配置validation 使用dbcp数据源要导入啥jar包_Source_04

第五条打印后,等待三秒打印第六条

 

dbcp多数据源 java 配置validation 使用dbcp数据源要导入啥jar包_bc_05