Java – JDBC – 数据库连接池

简介

对于数据库使用而言,我们通常都不会在需要操作数据库时才连接数据库,在操作完后又把数据库连接给断开,所以通常我们都会使用一种叫【数据库连接池技术】的方式,把多个连接进行托管,当出现需要使用时,获取连接权限对数据库进行操作,操作完成时并不会把数据库连接关闭,而是把数据库连接归还到托管程序上进行保存。

JDBC提供了DataSource数据源接口,由各数据库厂商提供实现接口,目前常用的【数据库连接池技术】通常有两种,分别是C3P0和Druid。

 

C3P0 数据源池管理技术

C3P0 是一项比较老但性能优越的数据库连接池技术

导入包

C3P0 需要导入两个包,分别是 C3P0 包和 依赖包

c3p0.jar
mchange-commons.jar
来源:默认网盘

 

配置c3p0-config.xml

<c3p0-config>
    <!-- 命名的配置 -->
    <named-config name="test">
        <!-- 连接数据库的4项基本参数 -->
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/mytest01</property>
        <property name="user">root</property>
        <property name="password">123</property>
        <!-- 如果池中数据连接不够时一次增长多少个 -->
        <property name="acquireIncrement">5</property>
        <!-- 初始化连接数 -->
        <property name="initialPoolSize">5</property>
        <!-- 最小连接数 -->
        <property name="minPoolSize">10</property>
        <!-- 最大连接数 -->
        <property name="maxPoolSize">40</property>
        <!-- JDBC的标准参数,用以控制数据源内加载的PrepareStatements数量 -->
        <property name="maxStatements">200</property>
        <!-- 连接池内单个连接所拥有的最大缓存statements数 -->
        <property name="maxStatementsPerConnection">5</property>
    </named-config>
</c3p0-config>

 

分类

属性

描述

必须项

user

用户名

password

密码

driverClass

驱动 mysql驱动,com.mysql.jdbc.Driver

jdbcUrl

路径 mysql路径,jdbc:mysql://localhost:3306/数据库

基本配置

acquireIncrement

连接池无空闲连接可用时,一次性创建的新连接数 默认值:3

initialPoolSize

连接池初始化时创建的连接数 默认值:3

maxPoolSize

连接池中拥有的最大连接数 默认值:15

minPoolSize

连接池保持的最小连接数

maxidleTime

连接的最大空闲时间。如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接,如果为0,则永远不会断开连接。 默认值:0

管理连接池的大小和连接的生存时间(扩展)

maxConnectionAge

配置连接的生存时间,超过这个时间的连接将由连接池自动断开丢弃掉。当然正在使用的连接不会马上断开,而是等待它 close 再断开。配置为 0 的时候则不会对连接的生存时间进行限制。 默认值:0

maxIdleTimeExcessConnections

这个配置主要时为了减轻连接池的负载,配置不为 0 ,则会将连接池中的连接数量保持到minPoolSize,为 0 则不处理。

配置PreparedStatement缓存(扩展)

maxStatements

连接池为数据源缓存的PreparedStatement的总数。由于PreparedStatement属于单个Connection,所有这个数量应该根据应用中平均连接数乘以每个连接的平均PreparedStatement来计算。为 0 的时候不缓存,同时maxStatementsPerConnection的配置无效。

maxStatementsPerConnection

连接池为数据源单个Connection缓存的PreparedStatement数,这个配置比maxStatements更有意义,因为它缓存的服务对象是单个数据连接,如果配置的好,肯定是可以提高性能的。为 0 的时候不缓存。

 

调用c3p0数据源

在类中可以调用C3P0提供核心工具类:ComboPooledDataSource,如果要使用连接池,必须创建该类的实例对象。

new ComboPooledDataSource(“名称”); //使用配置文件“命名配置”

<!-- 命名的配置 -->
<named-config name="test">

new ComboPooledDataSource(); //使用配置文件“默认配置”

<!-- 默认配置,如果没有指定使用则使用这个配置 -->
<default-config>

编写工具类

import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class C3P0Utils {

    //默认配置
    private static DataSource dataSource = new ComboPooledDataSource();
    //命名配置
    //private static DataSource dataSource = new ComboPooledDataSource("test");

    public static DataSource getDataSource() {
        return dataSource;
    }

    public static Connection getConnection() {
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}

 

Druid 数据源池管理技术

Druid 是阿里巴巴提供的国产高性能数据源池管理技术,目前国内基本都是使用这一种技术作为数据库连接技术

导入包

Druid需要导入一个包即可。

来源:默认网盘

 

定义配置文件

Druid是使用 properties 形式保存配置文件,可以改为任意名称,放在任意目录下。

# 连接地址
url: jdbc:mysql:// localhost :3306/ newm
# 连接数据库引擎类型
driverClassName: com.mysql.jdbc.Driver
# 数据库账户
username: root
# 数据库密码
password: root
# 最大连接池数量
maxActive: 20
# 初始化连接池数量
initialSize: 1
# 最长连接等待时间
maxWait: 60000

 

获取配置文件

因为Druid不使用固定文件位置,所以使用前需要导入配置文件

// 使用Properties 类读取 Properties 配置文件
Properties pro = new Properties();
// 这里是使用自身类定位 src 文件夹位置,并找到 src 根目录下的配置文件
FileInputStream is = 类名.class.getClassLoader().getResourceAsStream("配置文件");
pro.load(pro);

// 创建Druid数据源
DataSoruce ds = DruidDataSourceFactory.createDataSource(pro);
// 申请获取数据源中的连接池
Connection conn = ds.getConnection();

 

 

如果您喜欢本站,点击这儿不花一分钱捐赠本站

这些信息可能会帮助到你: 下载帮助 | 报毒说明 | 进站必看

修改版本安卓软件,加群提示为修改者自留,非本站信息,注意鉴别

THE END
分享
二维码
打赏
海报
Java – JDBC – 数据库连接池
JDBC提供了DataSource数据源接口,由各数据库厂商提供实现接口,目前常用的【数据库连接池技术】通常有两种,分别是C3P0和Druid。
<<上一篇
下一篇>>