DBCP数据库连接池技术

DBCP是Apache上的一个 Java连接池项目,也是 tomcat使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。dbcp没有自动的去回收空闲连接的功能。DBCP有小bug,一般不建议使用。
方式一:在Java代码中直接获取数据库信息,建立数据库连接池。
@Test
public void test() throws Exception {
    BasicDataSource source = new BasicDataSource();//建立数据库连接池
    source.setDriverClassName("com.mysql.jdbc.Driver");//驱动
    source.setUrl("jdbc:mysql://localhost:3306/test");//url
    source.setUsername("root");//用户名
    source.setPassword("123456");//密码        
    Connection conn = source.getConnection();//获取数据库连接
    System.out.println(conn);//打印数据库连接
}

 方式二:通过配置文件获取数据库信息,建立数据库连接池

@Test
public void throws Exception {
        Properties pros = new Properties();
        InputStream is = DBCPTest.class.getClassLoader().getResourceAsStream("dbcp.properties");
        pros.load(is);//获取配置文件
    DataSource source = BasicDataSourceFactory.createDataSource(pros);//建立数据库连接池。
    Connection conn = source.getConnection();//获取连接
    System.out.println(conn);//打印连接
}             

配置文件可以任意命名:xxx.properties   通常命名为dbcp.properties。

 

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc
username=root
password=123456

#<!-- 初始化连接 -->
initialSize=10

#最大连接数量
maxActive=50

#<!-- 最大空闲连接 -->
maxIdle=20

#<!-- 最小空闲连接 -->
minIdle=5

#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
maxWait=60000


#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]
#注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。
connectionProperties=useUnicode=true;characterEncoding=gbk

#指定由连接池所创建的连接的自动提交(auto-commit)状态。
defaultAutoCommit=true

#driver default 指定由连接池所创建的连接的只读(read-only)状态。
#如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)
defaultReadOnly=

#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
defaultTransactionIsolation=READ_UNCOMMITTED

 

 

 

 

 

 

DBCP数据库连接池技术

上一篇:SQL Server 分区表的创建方法与管理


下一篇:[转载] 十问 TiDB :关于架构设计的一些思考 TiDB