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