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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 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());
    }
}

输出如下所示:

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
SQL Java 数据库连接
一篇文章彻底理解数据库的各种 JDBC 超时参数 1
一篇文章彻底理解数据库的各种 JDBC 超时参数
|
存储 SQL 关系型数据库
【软件设计师】一篇文章带你了解数据库
【软件设计师】一篇文章带你了解数据库
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
1644 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
druid 网络协议 Java
再有人问你数据库连接池的原理,这篇文章甩给他!
在 Spring Boot 项目中,数据库连接池已经成为标配,然而,我曾经遇到过不少连接池异常导致业务错误的事故。很多经验丰富的工程师也可能不小心在这方面出现问题。 在这篇文章中,我们将探讨数据库连接池,深入解析其实现机制,以便更好地理解和规避潜在的风险。
|
SQL 数据管理 数据库
文章初学者指南:SQL新建数据库详细步骤与最佳实践
引言:在当今数字化的世界,数据库管理已经成为信息技术领域中不可或缺的一部分。作为广泛使用的数据库管理系统,SQL已经成为数据管理和信息检索的标准语言。本文将详细介绍如何使用SQL新建数据库,包括准备工作、具体步骤和最佳实践,帮助初学者快速上手。一、准备工作在开始新建数据库之前,你需要做好以下准备工作
879 3
|
SQL 监控 Java
C3P0数据库连接池
C3P0数据库连接池
334 0
|
网络协议 Java 关系型数据库
一篇文章彻底理解数据库的各种 JDBC 超时参数 2
一篇文章彻底理解数据库的各种 JDBC 超时参数
|
前端开发 数据库
文本----富文本数据如何存入到数据库当中,解决方法,看其他大佬写的文章
文本----富文本数据如何存入到数据库当中,解决方法,看其他大佬写的文章
文本----富文本数据如何存入到数据库当中,解决方法,看其他大佬写的文章
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的数据库课程在线教学附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的数据库课程在线教学附带文章和源代码部署视频讲解等
134 4
|
Java 测试技术 数据安全/隐私保护
基于ssm+vue.js+uniapp小程序的《数据库原理及应用》课程平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的《数据库原理及应用》课程平台附带文章和源代码部署视频讲解等
100 0
基于ssm+vue.js+uniapp小程序的《数据库原理及应用》课程平台附带文章和源代码部署视频讲解等

热门文章

最新文章

下一篇
开通oss服务