c3p0是一个开源的jdbc连接池。它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。
目前使用它的开源项目有Hibernate,Spring等。
要用到的Jar包:
配置数据源(常用):
<c3p0-config>
<named-config name="myc3p0">
<!-- 指定连接数据源的基本信息 -->
<property name="user">scott</property>
<property name="password">scott</property>
<property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
<property name="jdbcUrl">jdbc:oracle:thin:@localhost:1521:orcl</property>
<!-- 如果数据库中的连接池不足时,一次向数据库服务器申请的连接个数 -->
<property name="acquireIncrement">5</property>
<!-- 初始化数据库连接池的连接数 -->
<property name="initialPoolSize">5</property>
<!-- 数据库连接池中保存的最大的连接数 -->
<property name="minPoolSize">5</property>
<!-- 数据库连接池中保存的最小的连接数 -->
<property name="maxPoolSize">10</property>
<!-- c3p0数据库连接池可以维护的 Statement 个数 -->
<property name="maxStatements">20</property>
<!-- 每个连接同时可以使用的Statement对象的个数 -->
<property name="maxStatementsPerConnection">5</property>
</named-config>
</c3p0-config>
配置连接池:
package com.c3p0.test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JDBCC3P0Tools{
private static ComboPooledDataSource dataSource = null;
//数据库连接池只被初始化一次
static{
dataSource = new ComboPooledDataSource("myc3p0");
}
public static Connection getConnection() throws Exception{
return dataSource.getConnection();
}
public static void close(ResultSet rs, Connection conn, Statement stmt){
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}