美文网首页
DBCP连接池

DBCP连接池

作者: 小牛长成记 | 来源:发表于2018-11-05 21:43 被阅读0次

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);
    }
  }

相关文章

网友评论

      本文标题:DBCP连接池

      本文链接:https://www.haomeiwen.com/subject/brpexqtx.html