HikariCP连接池

1、为什么要使用连接池?

  • 传统JDCBC手动连接管理,每次操作都创建连接,频繁创建/关闭连接消耗资源。

  • 每次获取连接都要经过TCP三次握手、认证等,开销大。

  • 连接池预先创建一批连接,使用时从池中获取,用完归还,避免重复创建。

  • HikariCP 的设计目标是尽可能减少开销,从而提高性能。

2、HikariCP简介

HikariCP 是目前性能最好的Java数据库连接池,是轻量级的 JDBC 连接池,旨在提供快速和高效的数据库连接管理。

3、HikariCP连接池使用(maven项目)

3.1 添加依赖pom.xml

xml 复制代码
<!-- HikariCP依赖 -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>5.0.1</version>
</dependency>

<!-- MySQL驱动(根据你的数据库选择) -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>

3.2 创建HikariCP工具类

java 复制代码
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class HikariCPUtil {
    public static void main(String[] args){
        //1.创建HikariCP配置
        HikariConfig config = new HikariConfig();

        //2.配置数据库连接参数
        config.setJdbcUrl("jdbc:mysql://localhost:3306/test_db");
        config.setUsername("root");
        config.setPassword("123456");

        //3.配置连接池参数(连接池大小)
        config.setMaximumPoolSize(20);      // 最大连接数,默认10
        config.setMinimumIdle(10);          // 最小空闲连接数,默认等于maximumPoolSize
        config.setConnectionTimeout(30000); // 获取连接超时时间(毫秒),默认30000(30秒)
        config.setIdleTimeout(600000);      // 连接空闲超时(毫秒),默认600000(10分钟)
        config.setMaxLifetime(1800000);     // 连接最大生命周期(毫秒),默认1800000(30分钟)

        config.setConnectionTestQuery("SELECT 1"); //测试连接是否有效

        //4.创建数据源
        HikariDataSource dataSource = new HikariDataSource(config);

        //5.获取连接并使用
        try {
            Connection conn = dataSource.getConnection();
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT 1");

            if(rs.next()){
                System.out.println("连接成功!测试结果: " + rs.getInt(1));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //6.关闭连接池
            dataSource.close();
        }
    }
}

3.3 配置文件方式

可以创建一个 hikari.properties 文件,然后在代码中加载它:

java 复制代码
# hikari.properties
jdbcUrl=jdbc:mysql://localhost:3306/test_db
username=your_username
password=your_password
maximumPoolSize=10
minimumIdle=2
idleTimeout=30000
connectionTimeout=30000
maxLifetime=1800000
java 复制代码
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class HikariCPUtil {
    public static void main(String[] args){
        //1.创建HikariCP配置,并加载配置文件
        HikariConfig config = new HikariConfig("path/to/hikari.properties");

        //2.创建数据源
        HikariDataSource dataSource = new HikariDataSource(config);

        //3.获取连接并使用
        try {
            Connection conn = dataSource.getConnection();
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT 1");

            if(rs.next()){
                System.out.println("连接成功!测试结果: " + rs.getInt(1));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //4.关闭连接池
            dataSource.close();
        }
    }
}
相关推荐
a***72891 分钟前
Java进阶(ElasticSearch的安装与使用)
java·elasticsearch·jenkins
KmSH8umpK4 分钟前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第五篇
数据库·redis·分布式
Java成神之路-6 分钟前
面试题:Spring AOP底层实现原理
java·spring aop
lilihuigz8 分钟前
企业培训网站搭建指南:5步在WordPress上创建品牌学院
数据库
Python私教9 分钟前
如意Agent日志系统重构:从 print() 大海捞针到结构化可观测性栈
java·前端·重构
jieyucx14 分钟前
Go 零基础数据结构:顺序表(像「排抽屉」一样学增删改查)
java·数据结构·golang
曦夜日长15 分钟前
C++ STL容器string(一):string的变量细节、默认函数的认识以及常用接口的使用
java·开发语言·c++
WL_Aurora16 分钟前
MySQL 5 卸载到 MySQL 8 安装完整指南(不踩坑版)
数据库·mysql
灰阳阳19 分钟前
MySQL的基本架构
数据库·mysql·架构
北山有鸟21 分钟前
IS_ERR 判断出错后,再用 PTR_ERR 把它强制转换回 int 型的错误码作为函数的返回值。
java·开发语言