yhm050305

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C3P0 数据库连接池介绍

C3P0 是一个开源的 JDBC 数据库连接池库,它提供了高度灵活和高性能的连接池实现。C3P0 可以与各种关系型数据库一起使用,包括 MySQL、Oracle、SQL Server 等。它的名称 “C3P0” 实际上代表 “Connect3 Pool”,意味着它可以管理多个数据库连接。

C3P0 的主要特点包括:

  • 支持连接池的连接重用和管理。
  • 可以配置连接池的各项参数,以满足不同性能需求。
  • 具备连接超时、闲置连接的回收、异常处理等功能。
  • 提供了 JMX 支持,可以通过 JMX 监控和管理连接池。
  • 支持 JDBC3 和 JDBC4。

C3P0 jar包下载

一、C3P0 官网下载路径如下:

c3p0:JDBC DataSources/Resource Pools download | SourceForge.net

进入官网之后下载如下压缩包:

二、解压下载好的压缩包

需要的 jar 包在解压文件里的 lib 目录下。

c3p0-0.9.5.5.jar

c3p0-oracle-thin-extras-0.9.5.5.jar

mchange-commons-java-0.2.19.jar

三、将解压好的c3p0 jar包导入到idea项目里面去

根据个人需要将 c3p0-0.9.5.5.jar mchange-commons-java-0.2.19.jarjar包文件复制到项目的 lib 路径下。

将lib文件夹 “添加为库” 或 将添加的jar包 “添加为库”(必要操作)

C3P0 配置及使用(这里以mysql数据库演示)

一、C3P0 配置及使用(使用配置文件初始化连接池配置 )

1、新建 c3p0-config.xml

​ 我用的是配置 c3p0-config.xml 文件的方式,文件名固定。在项目的 src 目录下新建就行。:

<c3p0-config>
    <!--使用默认的配置读取数据库连接池对象 -->
    <default-config>
        <!--  连接参数 -->
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/你自己的数据库名称?useServerPrepStmts=true</property>
        <property name="user">用户名</property>
        <property name="password">密码</property>

        <!-- 连接池参数 -->
        <!--初始化申请的连接数量-->
        <property name="initialPoolSize">5</property>
        <!--最大的连接数量-->
        <property name="maxPoolSize">10</property>
        <!--超时时间-->
        <property name="checkoutTimeout">3000</property>
    </default-config>
</c3p0-config>	

2、连接MySql数据库操作

​ 首先,我们需要创建一个 C3P0 连接池的配置对象。(配置文件是使用C3P0的默认配置文件的方法,创建的连接对象会自动识别配置文件的内容)

public static void main(String[] args) throws SQLException {
    //创建ComboPooledDataSource数据源
    ComboPooledDataSource dataSource = new ComboPooledDataSource();
    //从数据源获取连接
    Connection conn = dataSource.getConnection();
    //预处理sql语句及执行查询操作
    ResultSet rs = conn.prepareStatement("select count(*) from 20231124db.depttab;").executeQuery();
    //处理sql查询的数据结果
    if (rs.next()) {
        System.out.println(rs.getInt(1));
    }
    //释放连接到连接池
    rs.close();
    conn.close();
    dataSource.close();
}

运行结果:

二、C3P0 配置及使用(使用C3P0自带的方法初始化连接池配置)

1、连接MySql数据库操作

首先,我们需要创建一个 C3P0 连接池的配置对象。C3P0 提供了 ComboPooledDataSource 类来实现这一功能。以下是一个简单的配置示例:

public static void main(String[] args) throws SQLException, PropertyVetoException {
    //c3p0的数据源
    ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
    //连接池的数据库连接参数
    comboPooledDataSource.setDriverClass("com.mysql.cj.jdbc.Driver");
    comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/20231124db");
    comboPooledDataSource.setUser("root");
    comboPooledDataSource.setPassword("sasa");
    //连接池参数设置
    comboPooledDataSource.setInitialPoolSize(5);
    comboPooledDataSource.setMaxPoolSize(20);
    comboPooledDataSource.setCheckoutTimeout(3000);
    //获取连接
    Connection conn = comboPooledDataSource.getConnection();
    //预处理sql语句及执行查询操作
    ResultSet rs = conn.prepareStatement("select count(*) from 20231124db.depttab;").executeQuery();
    //处理sql查询的数据结果
    if (rs.next()) {
        System.out.println(rs.getInt(1));
    }
    //释放数据
    rs.close();
    comboPooledDataSource.close();
    conn.close();
}

运行结果:

配置参数详解

C3P0 提供了许多配置参数,可以根据应用程序的需求进行调整。以下是一些常用的配置参数和其作用的简要说明:

  • jdbcUrl:数据库连接 URL。
  • user:数据库用户名。
  • password:数据库密码。
  • initialPoolSize:初始连接池大小。
  • minPoolSize:连接池中保持的最小连接数。
  • maxPoolSize:连接池中允许的最大连接数。
  • maxIdleTime:连接的最大空闲时间(以秒为单位)。
  • acquireIncrement:每次获取连接时增加的连接数。
  • idleConnectionTestPeriod:空闲连接测试的周期(以秒为单位)。
  • preferredTestQuery:用于测试连接的 SQL 查询语句。
  • testConnectionOnCheckin:在连接返回连接池时是否测试连接。
  • testConnectionOnCheckout:在从连接池获取连接时是否测试连接。

这些参数可以在 ComboPooledDataSource 对象中进行设置,以满足不同场景下的需求。

总结

C3P0 是一个功能强大的数据库连接池库,它可以提高数据库访问的性能和效率,减少连接的创建和销毁开销。通过合理配置和使用 C3P0 数据库连接池,可以使您的应用程序更加稳定和可靠。

posted on 2023-12-11 09:15  べ微熏の斜陽べ  阅读(57)  评论(0编辑  收藏  举报