C3P0连接池

 

  • C3P0:

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。

  • C3P0的使用:

第一步:导入c3p0jar包

第二步:编写配置文件

配置文件名称:c3p0-config.xml

配置文件位置:src类路径

代码如下:

<?xml version=”1.0″ encoding=”UTF-8″?>

<c3p0-config>

<!—命名的配置–>

<default-config>

<!—连接池的四项基本参数–>

<property name=”driverClass”>com.mysql.jdbc.Driver</property>

<property name=”jdbcUrl”>jdbc:mysql:///web_07</property>

<property name=”user”>root</property>

<property name=”password”>123</property>

<!—最小连接数–>

<property name=”initialPoolSize”>5</property>

<!—最大连接数–>

<property name=”maxPoolSize”>20</property>

</default-config>

 

<!—默认的配置-,如果没有指定名称那么使用这个配置->

<named-config name=”oracle”>

<property name=”driverClass”>com.mysql.jdbc.Driver</property>

<property name=”jdbcUrl”>jdbc:mysql:///web_07</property>

<property name=”user”>root</property>

<property name=”password”>123</property>

</named-config>

</c3p0-config>

第三步:没有使用c3p0utils工具类的测试:

@Test

//不使用工具类

public void testAddUser() {

Connection conn = null;

PreparedStatement pstmt = null;

// 1.创建自定义连接池对象

ComboPooledDataSource dataSource = new ComboPooledDataSource();

// 加载默认的配置

// ComboPooledDataSource dataSource = new

// ComboPooledDataSource(“chenqi“);//加载有名称的配置

try {

// 2.从池子中获取连接

conn = dataSource.getConnection();

String sql = “insert into user values(?,?)”;

pstmt = conn.prepareStatement(sql);

pstmt.setString(1, “zs”);

pstmt.setString(2, “zs”);

int rows = pstmt.executeUpdate();

if (rows > 0) {

System.out.println(“添加成功!”);

} else {

System.out.println(“添加失败!”);

}

} catch (Exception e) {

throw new RuntimeException(e);

} finally {

//JDBCUtils_V3.release(conn, pstmt, null);

}

}

 

使用c3p0工具类测试:

首先创建C3P0Utils工具类:

 

public class C3P0Utils {

//使用默认配置

//private static ComboPooledDataSource dataSource = new ComboPooledDataSource(“”);

 

//使用命名配置

private static ComboPooledDataSource dataSource = new ComboPooledDataSource(“chenqi”);

 

public static DataSource getDataSource() {

return dataSource;

}

 

public static Connection getConnection() {

try {

return dataSource.getConnection();

} catch (SQLException e) {

throw new RuntimeException(e);

}

}

}

测试类:

@Test

//使用工具类

public void testAddUser1() {

Connection conn = null;

PreparedStatement pstmt = null;

try {

// 2.从池子中获取连接

conn = C3P0Utils.getConnection();

String sql = “insert into user values(?,?)”;

pstmt = conn.prepareStatement(sql);

pstmt.setString(1, “lisi”);

pstmt.setString(2, “lisi”);

int rows = pstmt.executeUpdate();

if (rows > 0) {

System.out.println(“添加成功!”);

} else {

System.out.println(“添加失败!”);

}

} catch (Exception e) {

throw new RuntimeException(e);

} finally {

//JDBCUtils_V3.release(conn, pstmt, null);

}

}

 

发表评论