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();
        }
    }
}
相关推荐
小码过河.3 小时前
oceanbase中zone和observer、分区表之间关系
前端·数据库·oceanbase
LaughingZhu3 小时前
Product Hunt 每日热榜 | 2026-09-08
java·ide·深度学习·百度·intellij-idea
IT枫斗者枫哥3 小时前
Java 文件导出:写完了,为什么还不能标记成功?
java
其实防守也摸鱼3 小时前
OpenClaw Windows 踩坑实战指南
运维·服务器·数据库·windows·github·copilot
陈皮波比茶3 小时前
java笔记-typora快捷键
java
SelectDB3 小时前
Apache Doris+ Paimon 2.0:构建 Agentic AI 数据闭环
大数据·数据库·数据分析
蚂蚁雅嘿3 小时前
maven标签日常总结
java·maven
麦聪聊数据4 小时前
全链路数据安全防护(中):入口、权限、审计,筑牢安全管控铁三角
数据库
洋不写bug4 小时前
二叉树(二) 常见基础操作解析|结点数、树高、查找结点、判断完全二叉树
java·开发语言·数据结构·完全二叉树·二叉树结点数·树高·查找结点
山岚的运维笔记4 小时前
mysql 专业笔记 -- 第 17 章:连接:连接三个具有相同名称 ID 的表
运维·数据库·笔记·后端·学习·mysql·dba