1、概述
C3P0开源免费的连接池。目前使用它的开源项目由=有:Spring、Hibernate等。使用第三方工具需要导入jar包。C3P0使用时还需要添加配置文件c3p0-config.xml
2、导入jar包(0.9.2版本需要导入两个jar包)
3、 配置文件(src/c3p0-config.xml)
3.1、命名配置
<c3p0-config>
<!--命名的配置-->
<named-config name="oracle">
<!--连接数据库的4项基本参数-->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
<property name="user">root</property>
<property name="password">123456</property>
<!--如果池中数据不够时一次增长多少个-->
<property name="acquireIncrement">5</property>
<!--初始化连接数-->
<property name="initialPoolSize">20</property>
<!--最小连接数-->
<property name="minPoolSize">10</property>
<!--最大连接数-->
<property name="maxPoolSize">40</property>
<!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量-->
<property name="maxStatements">0</property>
<!--连接池内单个连接所拥有的最大缓存statement数-->
<property name="maxStatementsPerConnection">5</property>
</named-config>
</c3p0-config>
3.2、默认配置
<c3p0-config>
<!--默认配置,如果没有指定则使用这个配置-->
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
<property name="user">root</property>
<property name="password">123456</property>
<property name="checkoutTimeout">30000</property>
<property name="idleConnectionTestPeriod">30</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">10</property>
<property name="maxPoolSize">100</property>
<property name="maxStatements">200</property>
<user-overrieds user="test-user">
<property name="minPoolSize">1</property>
<property name="maxPoolSize">10</property>
<property name="maxStatements">0</property>
</user-overrides>
</default-config>
</c3p0-config>
4、常见配置项
5、编写工具类
C3P0提供核心工具类:ComboPooledDataSource,如果要使用连接池,必须创建该类的实例对象。
* new ComboPooledDataSource("名称"); 使用配置文件“命名配置” <named-config name = "Oracle">
* new ComboPooledDataSource(); 使用配置文件“默认配置” <default-config>
public class C3P0Utils {
//使用默认配置
//private static ComboPooledDataSource dataSource = new ComboPooledDataSource();
//使用命名配置
private static ComboPooledDataSource dataSource = new ComboPooledDataSource("Oracle");
/**获得数据源(连接池)
*@return
*/
public static DataSource getDataSource() {
return dataSource;
}
/**获得连接
*@return
*@throws SQLException
*/
public static Connection getConnection() {
try {
return dataSource.getConnection();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}