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();
        }
    }
}
相关推荐
北冥you鱼7 分钟前
Go 语言初始化 MySQL 数据库实战指南:从零到生产环境部署
数据库·mysql·golang
Jazz_z23 分钟前
通过 Java 实现 Word 转 TXT
java·c#·word
SelectDB27 分钟前
云数仓费钱?用 SelectDB Serverless 三步配出秒级弹性,最高降本 70%
数据库·云原生·数据分析
time展天129 分钟前
Dddify:给 ASP.NET Core 项目一套轻量、清晰、可落地的 DDD 基础设施
数据库·后端·asp.net
SamDeepThinking32 分钟前
为什么我会主动给一个年轻程序员加薪、晋升?
java·后端·程序员
杜子不疼.41 分钟前
【Qt初识】工程起步:项目创建、代码解读与对象树
数据库·c++·qt
ikun_文43 分钟前
Java面向对象编程OOP核心知识
java
SelectDB1 小时前
Agent 场景动态 JSON 性能拆解:Apache Doris 比 ClickHouse 快 7 倍、比 Elasticsearch 快 2 倍
数据库·json·agent
宠友信息1 小时前
MySQL 租户数据隔离在即时通讯源码后端中的落地方式
java·数据库·spring boot·redis·websocket·mysql
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第163题】【06_Spring篇】第23题:说说SpringBoot 自动配置原理?
java·自动配置·springboot·spi·条件注解