3.1介绍:
DBCP 是 Apache 软件基金组织下的开源连接池实现,Tomcat 的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用,也可由应用程序独立使用。
使用DBCP数据源,应用程序应在系统中增加如下两个 jar 文件:
Commons-dbcp.jar:连接池的实现
Commons-pool.jar:连接池实现的依赖库
3.2使用
1.导包:2个
2.在类路径下增加配置文件:dbcpconfig.properties
连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/day13
username=root
password=123
initialSize=10
最大连接数量
maxActive=50
maxIdle=20
minIdle=5
maxWait=60000
JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]
注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。
connectionProperties=useUnicode=true;characterEncoding=utf8
指定由连接池所创建的连接的自动提交(auto-commit)状态。
defaultAutoCommit=true
driver default 指定由连接池所创建的连接的只读(read-only)状态。
如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)
defaultReadOnly=
driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
defaultTransactionIsolation=REPEATABLE_READ
3.编写工具类
public class DBCPUtil {
private static DataSource ds = null;
static{
Properties prop = new Properties();
try {
prop.load(DBCPUtil.class.getClassLoader().getResourceAsStream("dbcpconfig.properties"));//根据DBCPUtil的classes的路径,加载配置文件
ds = BasicDataSourceFactory.createDataSource(prop);//得到一个数据源
} catch (Exception e) {
throw new ExceptionInInitializerError("初始化错误,请检查配置文件");
}
}
public static Connection getConnection(){
try {
return ds.getConnection();
} catch (SQLException e) {
throw new RuntimeException("服务器忙。。。");
}
}
public static void release(Connection conn,Statement stmt,ResultSet rs){
//关闭资源
if(rs!=null){
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
rs = null;
}
if(stmt!=null){
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
stmt = null;
}
if(conn!=null){
try {
conn.close(); //关闭,其实是交还给池子来处理
} catch (Exception e) {
e.printStackTrace();
}
conn = null;
}
}
}
4.编写测试类
public void test1(){
Connection conn = null;
PreparedStatement ps = null;
try {
conn = DBCPUtil.getConnection();
ps = conn.prepareStatement("...");
// ...
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBCPUtil.release(conn, ps, null);
}
}