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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 一篇文章学会学会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());
    }
}

输出如下所示:

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
SQL Java 数据库连接
一篇文章彻底理解数据库的各种 JDBC 超时参数 1
一篇文章彻底理解数据库的各种 JDBC 超时参数
|
2月前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
408 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
1月前
|
SQL 数据管理 数据库
文章初学者指南:SQL新建数据库详细步骤与最佳实践
引言:在当今数字化的世界,数据库管理已经成为信息技术领域中不可或缺的一部分。作为广泛使用的数据库管理系统,SQL已经成为数据管理和信息检索的标准语言。本文将详细介绍如何使用SQL新建数据库,包括准备工作、具体步骤和最佳实践,帮助初学者快速上手。一、准备工作在开始新建数据库之前,你需要做好以下准备工作
121 3
|
1月前
|
SQL 监控 Java
C3P0数据库连接池
C3P0数据库连接池
|
6月前
|
存储 SQL 关系型数据库
【软件设计师】一篇文章带你了解数据库
【软件设计师】一篇文章带你了解数据库
|
4月前
|
前端开发 数据库
文本----富文本数据如何存入到数据库当中,解决方法,看其他大佬写的文章
文本----富文本数据如何存入到数据库当中,解决方法,看其他大佬写的文章
文本----富文本数据如何存入到数据库当中,解决方法,看其他大佬写的文章
|
6月前
|
druid 网络协议 Java
再有人问你数据库连接池的原理,这篇文章甩给他!
在 Spring Boot 项目中,数据库连接池已经成为标配,然而,我曾经遇到过不少连接池异常导致业务错误的事故。很多经验丰富的工程师也可能不小心在这方面出现问题。 在这篇文章中,我们将探讨数据库连接池,深入解析其实现机制,以便更好地理解和规避潜在的风险。
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的数据库课程在线教学附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的数据库课程在线教学附带文章和源代码部署视频讲解等
46 4
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的《数据库原理及应用》课程平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的《数据库原理及应用》课程平台附带文章源码部署视频讲解等
49 0
|
5月前
|
Java 测试技术 数据安全/隐私保护
基于ssm+vue.js+uniapp小程序的《数据库原理及应用》课程平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的《数据库原理及应用》课程平台附带文章和源代码部署视频讲解等
39 0
基于ssm+vue.js+uniapp小程序的《数据库原理及应用》课程平台附带文章和源代码部署视频讲解等