1、c3p0 jar包
c3p0-0.9.1.2.jar
2、方式一
查看官方文档
package com.yinggu.demo8;
import java.sql.Connection;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
* @author:黑猴子的家
* @博客 :https://www.jianshu.com/u/37fd8e2dff4c
*
* 数据库连接池的引入:
* 传统模式的连接存在以下不足:
* 1.每次连接耗时较长,效率低
* 2.每次使用完需要关闭连接,数据库连接对象没有得到重复利用
* 3.每次使用用完如果不关闭连接,则容易导致内存泄漏 数据库
*
* 连接池的好处:
* 1、采用缓冲池的思想,效率提高
* 2、连接得到重复利用
* 3、统一的资源管理和分配
public class Testc3p0DataSource {
// 使用c3p0方式一
@Test
public void testC3P0_1() throws Exception {
// 1.创建连接池对象
ComboPooledDataSource cpds = new ComboPooledDataSource();
// 2.设置连接池的连接参数
cpds.setDriverClass("com.mysql.jdbc.Driver");
cpds.setJdbcUrl("jdbc:mysql:///test");
cpds.setUser("root");
cpds.setPassword("root");
// 3.设置连接池的配置参数
cpds.setInitialPoolSize(5);// 设置池子的初始连接数
cpds.setMinPoolSize(5);// 设置池子的最少连接数
cpds.setMaxPoolSize(20);// 设置池子的最大连接数
cpds.setAcquireIncrement(5);// 设置池子的每次向数据库服务器申请的连接数
// 4.获取可用连接对象
Connection connection = cpds.getConnection();
// 5.使用连接
System.out.println(connection);
// 6.关闭连接,仅仅是将连接对象放回池子中,并没有断开和数据库服务器的连接
connection.close();
}
}
3、方式二
1)c3p0-config.xml
<c3p0-config>
<named-config name="c3p0config">
<!-- 驱动类 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<!-- url -->
<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/test</property>
<!-- 用户名 -->
<property name="user">root</property>
<!-- 密码 -->
<property name="password">root</property>
<!-- 每次增长的连接数 -->
<property name="acquireIncrement">5</property>
<!-- 池子的初始连接数 -->
<property name="initialPoolSize">10</property>
<!-- 池子的最小连接数 -->
<property name="minPoolSize">5</property>
<!-- 池子的最大连接数 -->
<property name="maxPoolSize">10</property>
<!-- 池子的最大命令对象个数 -->
<property name="maxStatements">5</property>
<!-- 每个连接对象的最多命令对象个数 -->
<property name="maxStatementsPerConnection">2</property>
</named-config>
</c3p0-config>
2)code
// 使用c3p0方式二
@Test
public void testC3P0_2() throws Exception {
// 1.创建连接池对象
//c3p0config 是在 c3p0-config.xml 文件中 named-config 属性name 值一样
//c3p0-config.xml 文件名 不能改
//c3p0-config.xml 放到 src 下面
ComboPooledDataSource cpds = new ComboPooledDataSource("c3p0config");
// 2.获取连接
Connection connection = cpds.getConnection();
System.out.println(connection);
// 3.关闭连接
connection.close();
}
4、c3p0 改写 JDBCUtils -> JDBCc3p0Utils
package com.yinggu.utils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mchange.v2.c3p0.ComboPooledDataSource;
* 此类用于演示jdbc c3p0 数据库连接池 的连接的工具类
* 方法1:获取连接
* 方法2:关闭资源
* @author:黑猴子的家
* @博客 :https://www.jianshu.com/u/37fd8e2dff4c
public class JDBCc3p0Utils {
static ComboPooledDataSource cpds;
static {
// 1.创建连接池对象
cpds = new ComboPooledDataSource("c3p0config");
}
/**
* 获取连接
* @return 可用的连接对象
* @throws SQLException
*/
public static Connection getConnection() throws SQLException {
return cpds.getConnection();
}
/**
* 释放资源
* @param set
* @param statement
* @param connection
* @throws Exception
*/
public static void closeConnection(
ResultSet set,
Statement statement,
Connection connection) throws Exception {
if (set != null)
set.close();
if (statement != null)
statement.close();
if (connection != null)
connection.close();
}
}