JavaのHikariCPでコネクションプールを設定

HikariCPとは

HikariCP(Hikari Connection Pool)は、Javaアプリケーションでデータベース接続を効率的に管理するための高性能なJDBCコネクションプールです。
以下にHikariCPの主な特徴です。

1. 高速性能
HikariCPは、非常に高速な接続プールの一つとして知られています。

2. 低オーバーヘッド
メモリ使用量が少なく、オーバーヘッドが最小限に抑えられています。
これにより、大量の接続を必要とするアプリケーションでも効率的に動作します。

3. シンプルな設定
設定が簡単で、基本的な設定でも高いパフォーマンスを発揮します。
必要に応じて高度な設定も可能です。

4. 堅牢な設計
接続のリサイクルや再利用、接続の障害処理など、堅牢な接続管理機能を提供します。

5. JDBC標準をサポート
最新のJDBC標準をサポートしており、幅広いデータベースと互換性があります。

HikariCPの基本的な使用方法

以下は、HikariCPを使用した基本的な接続プールの設定例です。
(SpringBootの設定例は後述します)

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import java.sql.Connection;
import java.sql.SQLException;

public class HikariCPExample {
    public static void main(String[] args) {
        // HikariCPの設定
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl("jdbc:mysql://localhost:3306/mydatabase");
        config.setUsername("myuser");
        config.setPassword("mypassword");
        config.setMaximumPoolSize(10);

        // HikariDataSourceの作成
        HikariDataSource dataSource = new HikariDataSource(config);

        // データベース接続の取得と使用
        try (Connection connection = dataSource.getConnection()) {
            // データベース操作
            System.out.println("Connection successful!");
        } catch (SQLException e) {
            e.printStackTrace();
        }

        // DataSourceのクローズ
        dataSource.close();
    }
}

この例では、HikariConfigを使用して手動の接続設定を行い、HikariDataSourceを作成しています。
これにより、データベース接続を管理し、必要に応じてDBに接続してデータを取得できます。

SpringBootではデフォルトで搭載

SpringBootはデフォルトでHikariCPをコネクションプールとして使用するため、特別な設定はほとんど必要ありません。
以下は、SpringBootプロジェクトでHikariCPを使用するための手順です。

1. 依存関係の追加

SpringBootのプロジェクトに以下のような依存関係を追加し、DBに接続できる状態を作ります。

  • Spring Web
  • Spring Data JPA
  • MySQL Driver(または使用するデータベースのドライバー)

2. application.propertiesまたはapplication.ymlの設定

Spring Bootの設定ファイルにデータベース接続情報を追加します。
以下は、application.propertiesファイルの例です:

# データベース接続情報
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=myuser
spring.datasource.password=mypassword

# HikariCPの設定(最大プールサイズを設定している例)
spring.datasource.hikari.maximum-pool-size=10

または、application.ymlを使用する場合は:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydatabase
    username: myuser
    password: mypassword
    hikari:
      maximum-pool-size: 10

3. アプリケーションの起動

すべての設定とコードが整ったら、SpringBootアプリケーションを起動します。
アプリケーションが正常に起動すれば、HikariCPがコネクションプールとして使用され、起動時に以下のようなログが表示されます。

2024-09-05 10:20:01.123  INFO 12345 --- [main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2024-09-05 10:20:02.456  INFO 12345 --- [main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.