C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
c3p0与dbcp区别
dbcp没有自动回收空闲连接的功能
c3p0有自动回收空闲连接功能
方式一:步骤:
1、加入jar
如果是c3p0-0.9.1.2版本,加入一个jar即可c3p0-0.9.1.2.jar
如果是c3p0-0.9.2之后的版本,需要加入两个jar:c3p0-0.9.X.jar和mchange-commons-java-XX.jar
2、编写代码
package com.jdbc.datasource; import com.mchange.v2.c3p0.ComboPooledDataSource; public class TestC3P0 { public static void main(String[] args)throws Exception { //1、创建c3p0数据源对象 ComboPooledDataSource ds = new ComboPooledDataSource(); //2、设置必须属性 ds.setDriverClass( “com.mysql.jdbc.Driver” ); ds.setJdbcUrl( “jdbc:mysql://localhost:3306/test” ); ds.setUser(“root”); ds.setPassword(“root”); //3、获取连接 System.out.println(ds.getConnection()); } } |
- 在src目录创建 c3p0-config.xml 文件, 参考帮助文档中 Appendix B: Configuation Files 的内容
- 创建 ComboPooledDataSource 实例;
- 在src目录创建 c3p0-config.xml 文件, 参考帮助文档中 Appendix B: Configuation Files 的内容
- 创建 ComboPooledDataSource 实例;
DataSource dataSource = new ComboPooledDataSource(“helloc3p0”);
- 从 DataSource 实例中获取数据库连接.
<?xml version=”1.0″ encoding=”UTF-8″?> <c3p0-config> <named-config name=”helloc3p0“> <!– 指定连接数据源的基本属性 –> <property name=”user”>root</property> <property name=”password”>root</property> <property name=”driverClass”>com.mysql.jdbc.Driver</property> <property name=”jdbcUrl”>jdbc:mysql://localhost:3306/test</property> <!– 若数据库中连接数不足时, 一次向数据库服务器申请多少个连接 –> <property name=”acquireIncrement”>5</property> <!– 初始化数据库连接池时连接的数量 –> <property name=”initialPoolSize”>5</property> <!– 数据库连接池中的最小的数据库连接数 –> <property name=”minPoolSize”>5</property> <!– 数据库连接池中的最大的数据库连接数 –> <property name=”maxPoolSize”>10</property> </named-config> </c3p0-config> |
package com.jdbc.datasource; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; public class TestC3P02 { public static void main(String[] args)throws Exception { DataSource dataSource = new ComboPooledDataSource(“helloc3p0“); System.out.println(dataSource.getConnection()); } } ception; import com.mchange.v2.c3p0.ComboPooledDataSource; publicclass C3p0Utils { //创建数据源,用的是c3p0-config.xml文件中<default-config> privatestatic ComboPooledDataSource dataSource = new ComboPooledDataSource(); //获取数据源对象 publicstatic ComboPooledDataSource getDataSource() { returndataSource; } //获取连接 publicstatic Connection getConnection() throws SQLException{ returndataSource.getConnection(); } } |