一篇文章学会学会c3p0数据库连接池~

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 一篇文章学会学会c3p0数据库连接池~

初识C3P0

C3P0是一个开源的Java数据库连接池,用于管理和复用数据库连接,使用C3P0数据库连接池可以有效地管理数据库连接,减少频繁创建和关闭连接的开销,以提高应用程序的性能和可扩展性。它支持JDBC驱动程序,并提供了一些高级功能,如连接池自动回收、连接检测、连接超时等。


它可以在应用程序启动时,创建一定数量的数据库连接,并在需要时将连接分配给应用程序。当应用程序使用完连接后,它可以将连接返回到连接池中进行复用,而不是直接关闭连接。


C3P0还提供了一些高级功能,如连接池自动回收。当数据库连接长时间未使用时,C3P0可以自动回收这些连接,并释放相关资源。此外,C3P0还支持连接检测和连接超时功能,可以检测不可用的连接并将其从连接池中移除。


C3P0的配置相对简单,可以通过配置文件或编程方式进行设置。可以设置连接池的最小连接数、最大连接数、连接超时时间、连接检测时间间隔等参数。

使用C3P0:

在pom.xml文件中导入对应的依赖:

<dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.5.2</version>
</dependency>

第二步:创建对应的配置文件c3p0-config.xml,注意c3p0配置文件的名字必须为这个,不能自定义,相比于之前的JDBCUtils,c3p0-config.xml的作用即为加载驱动,并且可以配置数据库连接所需的相关信息,那么在真正使用时,我们只需要获取连接对象即可

<?xml version="1.0" encoding="utf-8"?>
<c3p0-config>
    <!--默认的配置--连接book数据库-->
    <default-config>
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/book?serverTimezone=UTC</property>
        <property name="user">root</property>
        <property name="password">112899</property>
        <property name="initialPoolSize">100</property>
        <property name="MaxIdleTime">2000</property>
    </default-config>
    <!--用户自定义配置1---连接mybatis数据库 -->
    <named-config name="mySource">
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC</property>
        <property name="user">root</property>
        <property name="password">112899</property>
        <property name="initialPoolSize">10</property>
        <property name="maxIdleTime">30</property>
        <property name="maxPoolSize">100</property>
        <property name="minPoolSize">10</property>
    </named-config>
     <!--用户自定义配置2---连接ssm数据库 -->
    <named-config name="mySource">
        <property name="driverClass">com.mysql.cj.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC</property>
        <property name="user">root</property>
        <property name="password">112899</property>
        <property name="initialPoolSize">10</property>
        <property name="maxIdleTime">30</property>
        <property name="maxPoolSize">100</property>
        <property name="minPoolSize">10</property>
    </named-config>
</c3p0-config>

测试类:

package JDBC;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class DataSourceTest {
    static Connection connection=null;
    public static Connection getConnection(DataSource dataSource) throws SQLException {
        connection=dataSource.getConnection();
        return connection;
    }
    public static void main(String[] args) throws SQLException {
        //连接c3P0数据库连接池中的配置名称为mySource的数据库
        DataSource dataSource=new ComboPooledDataSource("mySource");
        getConnection(dataSource);
        System.out.println(connection.getCatalog());
    }
}

输出如下所示:

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
SQL Java 数据库连接
一篇文章彻底理解数据库的各种 JDBC 超时参数 1
一篇文章彻底理解数据库的各种 JDBC 超时参数
|
5月前
|
druid 网络协议 Java
再有人问你数据库连接池的原理,这篇文章甩给他!
在 Spring Boot 项目中,数据库连接池已经成为标配,然而,我曾经遇到过不少连接池异常导致业务错误的事故。很多经验丰富的工程师也可能不小心在这方面出现问题。 在这篇文章中,我们将探讨数据库连接池,深入解析其实现机制,以便更好地理解和规避潜在的风险。
|
2月前
|
存储 NoSQL 关系型数据库
一篇文章带你搞懂非关系型数据库MongoDB
一篇文章带你搞懂非关系型数据库MongoDB
58 0
|
2月前
|
存储 SQL 关系型数据库
【MySQL 数据库】6、一篇文章学习【索引知识】,提高大数据量的查询效率【文末送书】
【MySQL 数据库】6、一篇文章学习【索引知识】,提高大数据量的查询效率【文末送书】
59 0
|
7月前
|
网络协议 Java 关系型数据库
一篇文章彻底理解数据库的各种 JDBC 超时参数 2
一篇文章彻底理解数据库的各种 JDBC 超时参数
|
7月前
|
SQL 存储 关系型数据库
MySQL的第一篇文章——了解数据库、简单的SQL语句
MySQL的第一篇文章——了解数据库、简单的SQL语句
|
9月前
|
存储 数据库 Android开发
Android 使用Room操作SQLite数据库让其变得无比高效和简洁(前一篇文章的完善)
Android 使用Room操作SQLite数据库让其变得无比高效和简洁(前一篇文章的完善)
121 0
|
9月前
|
运维 监控 小程序
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)(四)
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)(四)
437 0
|
9月前
|
运维 数据库
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)(三)
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)(三)
127 0
|
9月前
|
运维 数据库 数据安全/隐私保护
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)(二)
【运维知识进阶篇】一篇文章带你搞懂Jumperserver(保姆级教程:安装+用户与用户组+创建资产+授权资产+创建数据库+sudo提权+命令过滤+多因子认证+网域功能+审计台)(二)
112 0