Class PooledDatabaseFetchRule

java.lang.Object
com.streamconverter.command.rule.PooledDatabaseFetchRule
All Implemented Interfaces:
IRule

public class PooledDatabaseFetchRule extends Object implements IRule
HikariCP対応のデータベースフェッチルール

DatabaseFetchRuleの高性能版です。HikariCPを使用して接続の再利用により パフォーマンスを大幅に向上させます。特に大量のデータ処理や高頻度のデータベースアクセスが 必要な場合に効果的です。

使用例:


 // HikariCP接続プールを作成
 HikariConnectionPoolConfig pool = new HikariConnectionPoolConfig("jdbc:h2:mem:testdb", 10, Duration.ofSeconds(30));

 // プール対応ルールを作成
 PooledDatabaseFetchRule rule = new PooledDatabaseFetchRule(
     pool,
     "SELECT name FROM users WHERE id = ?"
 );

 // 大量処理でも高速
 for (int i = 0; i < 10000; i++) {
     String result = rule.apply(String.valueOf(i));
 }

 // 使用後はプールをシャットダウン
 pool.close();
 

DatabaseFetchRuleとの違い:

  • 業界標準HikariCP使用によりパフォーマンス大幅向上
  • 接続リーク検出と自動回復
  • 複数スレッドからの同時アクセス対応
  • 詳細なプールメトリクス
  • Constructor Details

  • Method Details

    • apply

      public String apply(String input)
      ルールの適用を実行します。

      コネクションプールから接続を取得してクエリを実行し、結果の先頭行・先頭列の値を返します。 接続はプールに自動的に返却されるため、高いパフォーマンスを実現します。

      Specified by:
      apply in interface IRule
      Parameters:
      input - 変換対象の文字列(クエリパラメータとして使用)
      Returns:
      クエリ結果の先頭値、または空文字列(結果がない場合)
    • getPoolStats

      public String getPoolStats()
      プールの統計情報を取得
      Returns:
      プールの統計情報