java_JDBC连接池HikariCP和DBCP的使用

🎉一、 数据库连接池概述

连接池是一种常用的技术,为什么需要连接池呢?
这个需要从TCP说起。假如我们的服务器跟数据库没有部署在同一台机器,那么,服务器每次查询数据库都要先建立连接,一般都是TCP链接,建立连接就需要3次握手了,假设后台服务跟数据库的单程的访问时间需要10ms,那么光是建立连接就花了30ms,并且TCP还有慢启动的机制,实际上一次查询可能还不止1次TCP来回,查询效率就会大大降低。

🎉二、为什么需要连接池

为了解决上述问题,我们就需要维护一些长链接,这样就不用每次都去建立连接,毕竟建立连接除了占用时间,还需要一些其他的系统资源。另外的好处,连接池让我们更加容易地管理,一方面是可以避免数据库资源都被某几个API占据,另一方面也可以避免资源泄露。

🎉三、HikariCP:

HikariCP是由日本程序员开源的一个数据库连接池组件,代码非常轻量,并且速度非常的快。根据官方提供的数据,在i7,开启32个线程32个连接的情况下,进行随机数据库读写操作,HikariCP的速度是现在常用的C3P0数据库连接池的数百倍。在SpringBoot2.0中,官方也是推荐使用HikariCP

要先导入下载好的jar包(全下好噢!):
点击这里即可下载!!!
点击这里即可下载!!!
点击这里即可下载!!!

在这里插入图片描述

🐲1、HikariCP配置文件:

driverClassName=com.mysql.cj.jdbc.Driver
# 数据库连接URL
jdbcUrl=jdbc:mysql://localhost:3306/qiche1204
# 数据库用户名
username = root
# 数据库密码
password = SASA
# 连接池名称
poolName=MyConnectionPool
# 连接池大小
maximumPoolSize=10
# 最小空闲连接数
minimumIdle=5
# 连接超时时间(毫秒)
connectionTimeout=30000
# 空闲连接超时时间(毫秒)
idleTimeout=600000
# 最大生存时间(毫秒)
maxLifetime=1800000

🐲2、HikariCP案例演示:

package HikariCP;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.junit.Test;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

public class Demo1 {
    @Test
    public void testHikari() throws IOException, SQLException {
            //1.配置连接池
//            HikariConfig hikariConfig = new HikariConfig();
//            也可以通过properties配置文件配置连接池new HikariConfig(Properties  properties)
            Properties properties = new Properties();
            FileInputStream fileInputStream = new FileInputStream("src\\HikariCP.properties");
            properties.load(fileInputStream);
            HikariConfig hikariConfig = new HikariConfig(properties);
            /*hikariConfig.setJdbcUrl("jdbc:mysql://localhost:3306");
            hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");
            hikariConfig.setUsername("root");
            hikariConfig.setPassword("SASA");
            hikariConfig.setMaximumPoolSize(30); // 最大连接数
            hikariConfig.setMinimumIdle(10);     // 最小连接数
            hikariConfig.setConnectionTimeout(3000); // 连接超时时间从连接池中获取一个连接最大等待多久时间,单位毫秒*/

            //2.通过配置类生成HikariCP连接池对象
            HikariDataSource dataSource = new HikariDataSource(hikariConfig);
            System.out.println(dataSource.getConnection());

    }

}

运行结果如下就好:

在这里插入图片描述

🎉四、DBCP:

1、DBCP是Apache提供的数据库连接池,它是一个用于管理数据库连接的工具。它可以帮助我们更有效地使用数据库连接资源,提高数据库访问的性能和效率。

2、DBCP是Tomcat服务器自带的数据库连接池,它相对于C3P0连接池来说速度更快。然而,DBCP自身存在一些BUG,并且Hibernate3已经停止对其提供支持。

3、使用DBCP连接池的好处是可以减少数据库连接的创建和销毁的开销,提高数据库访问的性能。此外,连接池还可以管理连接的数量,避免连接过多导致资源浪费,同时也可以控制连接的超时时间,避免连接长时间占用而不释放。

要先导入下载好的jar包(全下好噢):
点击这里即可下载!!!
点击这里即可下载!!!
点击这里即可下载!!!

在这里插入图片描述

🐲1、DBCP配置文件:


driverClassName=com.mysql.cj.jdbc.Driver
# 数据库连接URL
url=jdbc:mysql://localhost:3306/qiche1204
# 数据库用户名
username=root
# 数据库密码
password=SASA
initialSize=10
maxActive=30
maxWait=3000

🐲2、DBCP案例演示:

package DBCP;

import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;
import org.junit.Test;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Properties;

public class Demo1 {
    @Test
    public void testDBCP() throws SQLException, IOException {
        // 创建一个Properties对象
        Properties properties = new Properties();
        // 创建一个FileInputStream对象,用于读取src\\dbcp.properties文件
        FileInputStream fileInputStream
                = new FileInputStream("src\\dbcp.properties");
        // 使用FileInputStream对象读取文件,并将文件内容加载到properties对象中
        properties.load(fileInputStream);
        // 使用properties对象创建一个BasicDataSource对象
        BasicDataSource dataSource = BasicDataSourceFactory.createDataSource(properties);
        // 打印dataSource对象创建的连接
        System.out.println(dataSource.getConnection());
    }

}

运行结果如下就好:

在这里插入图片描述

🎉五、总结

它们的主要目的是提高数据库连接的性能和效率,通过复用连接对象来避免频繁地创建和销毁连接。

HikariCP是一个轻量级的JDBC连接池,相比于DBCP,它具有更快的启动时间和
更低的内存消耗。使用HikariCP,可以通过以下步骤来配置连接池:

添加HikariCP的依赖项到项目中
在应用程序的配置文件中配置连接池的属性,例如数据库URL、用户名、密码等
在应用程序中使用HikariDataSource来获取数据库连接对象

DBCP是一个较老的连接池实现,被广泛使用。使用DBCP,可以通过以下步骤
来配置连接池:

添加DBCP的依赖项到项目中
在应用程序的配置文件中配置连接池的属性,例如数据库URL、用户名、密码等
创建一个BasicDataSource对象,并设置连接池的属性
使用BasicDataSource来获取数据库连接对象
  • 37
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值