java之HikariCP连接池介绍和使用方法 简单易懂!!!

发布时间:2023年12月20日


?前言:本章主要学习hikaricp连接池的介绍以及使用

😎一、HikariCP连接池介绍

在我们的工作中,免不了要和数据库打交道,而要想和数据库打好交道,选择一款合适的数据库连接池就至关重要,我们基本使用的数据库连接池有 c3p0、DBCP、BoneCP、Druid 等,而我们这次要介绍的主角是 HiKariCP,HiKariCP 号称业界跑得最快的数据库连接池,近几年发展的风生水起,更是被 Spring Boot 2.0 选中作为其默认数据库连接池。

HiKariCP 全称 HiKari Connection Pool,HiKari 源自日语 - 光

😎二、导入的jar包

一些为直接下载,一些去官网下载
https://mvnrepository.com/artifact/com.zaxxer/HikariCP/4.0.3
https://mvnrepository.com/artifact/org.slf4j/slf4j-api/1.7.25
https://repo1.maven.org/maven2/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.jar

😎三、代码演示

🧨Properties配置文件

代码如下:

# 连接URL
jdbcUrl=jdbc:mysql://localhost:3306/mydatabase

# 用户名
username=myusername

# 密码
password=mypassword

# 连接池名称
poolName=MyConnectionPool

# 连接池大小
maximumPoolSize=10

# 最小连接数
minimumIdle=5

# 连接超时时间(毫秒)
connectionTimeout=30000

# 空闲连接超时时间(毫秒)
idleTimeout=600000

# 最大生存时间(毫秒)
maxLifetime=1800000

🧨使用配置文件连接

代码如下:

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.配置连接池

		//也可以通过properties配置文件配置连接池new HikariConfig(Properties  properties)
        Properties properties = new Properties();
        FileInputStream fileInputStream = new FileInputStream("src\\HikariCP.properties");
        properties.load(fileInputStream);
        HikariConfig hikariConfig = new HikariConfig(properties);

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

    }
}

🧨运行结果

在这里插入图片描述

😎四、总结

HikariCP连接池是高性能的JDBC连接池,官网标注的三大特点:快速、简单、可靠,性能优于其他连接池。
官网详细地说明了HikariCP所做的一些优化,总结如下:

字节码精简:优化代码,直到编译后的字节码最少(展平继承层次结构,掩饰成员变量,消除强制类型转换),这样,CPU缓存可以加载更多的程序代码;

优化代理和拦截器:减少代码,例如HikariCP的Statement proxy只有100行代码,只有BoneCP的十分之一;

自定义数组类型(FastStatementList)代替ArrayList:避免每次get()调用都要进行range

check,避免调用remove()时的从头到尾的扫描; 自定义无锁集合类型(ConcurrentBag):提高并发读写的效率;

文章来源:https://blog.csdn.net/weixin_72473547/article/details/135110821
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。