零額外開銷最快的資料庫連線池?HikariCP 入門介紹

老马啸西风發表於2024-03-17

擴充閱讀

從零開始手寫 mybatis (三)jdbc pool 如何從零手寫實現資料庫連線池 dbcp?

萬字長文深入淺出資料庫連線池 HikariCP/Commons DBCP/Tomcat/c3p0/druid 對比

Database Connection Pool 資料庫連線池概覽

c3p0 資料池入門使用教程

alibaba druid 入門介紹

資料庫連線池 HikariCP 效能為什麼這麼快?

Apache Tomcat DBCP(Database Connection Pool) 資料庫連線池-01-入門介紹

vibur-dbcp 併發、快速且功能完備的 JDBC 連線池,提供先進的效能監控功能-01-入門介紹

HikariCP

快速、簡單、可靠。HikariCP 是一個“零額外開銷”的生產就緒的 JDBC 連線池。

該庫大小約為130Kb,非常輕量級。

在這裡閱讀關於我們是如何做到的。

構件 Artifacts

Java 11+ Maven 構件

<dependency>
   <groupId>com.zaxxer</groupId>
   <artifactId>HikariCP</artifactId>
   <version>5.1.0</version>
</dependency>

Java 8 Maven 構件 (維護模式)

<dependency>
   <groupId>com.zaxxer</groupId>
   <artifactId>HikariCP</artifactId>
   <version>4.0.3</version>
</dependency>

或者從這裡下載

🚀 初始化

您可以像這樣使用HikariConfig1

HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/simpsons");
config.setUsername("bart");
config.setPassword("51mp50n");
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");

HikariDataSource ds = new HikariDataSource(config);

1 MySQL特定示例,請勿逐字複製。

或者直接例項化HikariDataSource如下所示:

HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl("jdbc:mysql://localhost:3306/simpsons");
ds.setUsername("bart");
ds.setPassword("51mp50n");
...

或者基於屬性檔案:

// 在檔案系統和類路徑中檢查.properties檔案
HikariConfig config = new HikariConfig("/some/path/hikari.properties");
HikariDataSource ds = new HikariDataSource(config);

示例屬性檔案:

dataSourceClassName=org.postgresql.ds.PGSimpleDataSource
dataSource.user=test
dataSource.password=test
dataSource.databaseName=mydb
dataSource.portNumber=5432
dataSource.serverName=localhost

或者基於java.util.Properties

Properties props = new Properties();
props.setProperty("dataSourceClassName", "org.postgresql.ds.PGSimpleDataSource");
props.setProperty("dataSource.user", "test");
props.setProperty("dataSource.password", "test");
props.setProperty("dataSource.databaseName", "mydb");
props.put("dataSource.logWriter", new PrintWriter(System.out));

HikariConfig config = new HikariConfig(props);
HikariDataSource ds = new HikariDataSource(config);

還有一個可用的系統屬性,hikaricp.configurationFile,可以用來指定屬性檔案的位置。

如果您打算使用此選項,請使用預設建構函式構造HikariConfigHikariDataSource例項,屬性檔案將會被載入。

相關文章