0

Hibernate/JPAを使用するJSP/Springアプリケーションをデータベースに接続しています。Webサーバーが5分ごとに稼働しているかどうかを確認する外部プログラムがあります。

プログラムは特定のURLを呼び出して、Webサーバーがまだ実行されているかどうかを確認します。サーバーは「SUCCESS」を返します。明らかに、サーバーが現在の場合、何も返されません。リクエストがタイムアウトし、何かが間違っていることをシステム管理者に通知するアラートが発生します...

このプロセスに別のレイヤーを追加したいと思います。データベースサーバーがダウンした場合、サーバーが「ERROR」を返すようにします。Hibernateを使用してデータベースサーバーが正常に動作しているかどうかを確認する方法はありますか?

私がやろうとしたのは、オブジェクトを取得して保存しようとすることでした。これはうまくいくでしょうが、私が望むものには多分多すぎると思います。データベースからオブジェクトを読み取る(ロードする)こともできます。ただし、すべてのオブジェクトに第2レベルのキャッシュを使用しているため、オブジェクトはデータベースではなくキャッシュからロードされます。

私が探しているのは次のようなものです。

HibernateUtils.checkDatabase()

そのような機能はHibernateに存在しますか?

4

1 に答える 1

0

たとえば、ネイティブクエリを使用できます

Query query = sess.createNativeQuery("select count(*) from mytable").setCacheable(false);
BigDecimal val = (BigDecimal) query.getSingleResult();

これにより、休止状態がプールからの接続を使用するようになります。データベースがダウンしている場合、プールから接続を取得できないため、hibernate によって返されるエラーが正確にはわかりません。データベースが稼働している場合は、クエリの結果が得られます。

于 2010-01-26T19:28:06.497 に答える