1. ホーム
  2. java

[解決済み] DBCP - 異なるデータベースのためのvalidationQuery

2023-04-28 10:06:34

質問

DBCPプールを使っていますが testOnBorrow testOnReturn を使用して、接続がまだ有効であるかどうかをテストします。

残念ながら、私はそれを動作させるために、プロパティvalidationQueryを設定する必要があります。

質問です。 validationQueryにはどのような値を入れるべきでしょうか?

validationQueryはSQLのSELECT文でなければならず、少なくとも1行を返さなければならないことは知っています。

問題は、私たちがさまざまなデータベース(DB2、Oracle、hsqldb)を使用していることです。

どのように解決するのですか?

すべてのデータベースに対応するvalidationQueryは1つだけではありません。各データベースで異なるvalidationQueryを使用する必要があります。

数時間のググりとテストの後、私はこのテーブルを集めました。

データベースの検証クエリの注意事項

  • hsqldb - select 1 from INFORMATION_SCHEMA.SYSTEM_USERS
  • オラクル - select 1 from dual
  • DB2 - select 1 from sysibm.sysdummy1
  • mysql - select 1
  • マイクロソフト SQL サーバー - select 1 (SQL-Server 9.0, 10.5 [2008]でテスト済み)
  • postgresql - select 1
  • イングレス - select 1
  • ダービー - values 1
  • H2 - select 1
  • ファイヤーバード - select 1 from rdb$database
  • MariaDb - select 1
  • インフォミックス - select 1 from systables
  • ハイブ - select 1
  • インパラ - select 1

ブログで書きました -。 様々なデータベースのバリデーションクエリ .

あらかじめ、JDBCドライバに応じたvalidationQueryを返すクラスの例があります。

または、誰かがより良い解決策を持っていますか?