[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()) { // ... } ```