0

Hibernate を使用してデータベース通信の失敗をキャッチするにはどうすればよいですか? アプリケーションの実行時に、DB の接続が存在する場合、entitymanager を取得しました。接続が開いているか閉じているかを取得する方法

4

2 に答える 2

0

どの JPA プロバイダーを使用していますか?

接続プーリングを備えた EclipseLink を使用している場合は、失敗後に切断された接続を自動検出し、新しい接続でクエリの実行を再試行する必要があります。

それ以外の場合は、使用している DataSource または接続プールに応じて、接続テストを有効にして、使用前に接続が有効であることを確認できます (ただし、これによりオーバーヘッドが追加されます)。

JPA 例外をキャッチして、JPA トランザクションを再試行することもできます。

于 2012-07-05T13:27:35.430 に答える
0

org.hibernate.SessionFactory一般に、オブジェクトとメソッドgetCurrentSession()またはを使用して Session オブジェクトを取得する必要がありますopenSession()。実際にインスタンスである Session オブジェクトを取得したら、メソッドorg.hibernate.impl.SessionImplを使用して Connection オブジェクトを取得できますconnection()

例:

((SessionImpl)sessionFactory.getCurrentSession()).connection().isClosed();

使用する前に接続をチェックするオプションがあるc3p0 接続プールを使用できます。

于 2012-07-06T05:45:45.340 に答える