[toc]
## Info
https://github.com/brettwooldridge/HikariCP
JDBC Connection Pool
## Connection Pool
如果每次訪問數據都建立connection, 每次都會需要等待, 會降低反應時間。
Connection Pool會把(可能是特定數量)的連接緩存起來,
需要的時候直接從Connection Pool拿取。
如果要使用連結時, 所有連接都被使用, 會等待到有空閒連接出現。
可以設定各種參數, 如最大/最小連線數, 空閒時間, 等等。
### 官方介紹
Fast, simple, reliable. HikariCP is a "zero-overhead" production ready JDBC connection pool. At roughly 165Kb, the library is very light.
## maven dependency
https://mvnrepository.com/artifact/com.zaxxer/HikariCP
```
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>6.2.1</version>
</dependency>
```
## 使用
### HikariConfig
首先先建立一個HikariConfig, 設定Connection Pool的配置。
https://github.com/brettwooldridge/HikariCP/blob/dev/src/main/java/com/zaxxer/hikari/HikariConfig.java
```java
HikariConfig config = new HikariConfig();
config.setJdbcUrl(url);
config.setUsername(user);
config.setPassword(password);
```
### HikariDataSource
接下來建立連接池
```java
HikariDataSource dataSource = new HikariDataSource(config);
```
(當然, 還是可以直接更改dataSource的配置。)
```java
dataSource.setXXX(...);
```
### getConnection
取得連線
```java
Connection conn = dataSource.getConnection();
```
這個連線就是JDBC的java.sql.Connection了。
(要記得, jdbc的Conenction是Autocloseable的resources, 要記得釋放資源, 或是使用try-with-resources)
```java
try (Connection conn = dataSource.getConnection()) {
// ...
}
```