文章目录
- 😎一、HikariCP连接池介绍
- 😎二、导入的jar包
- 😎三、代码演示
- 🧨Properties配置文件
- 🧨使用配置文件连接
- 🧨运行结果
- 😎四、总结
✨前言:本章主要学习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 {@Testpublic 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):提高并发读写的效率;