3

JPAがタイムアウトし、構成された時間が経過すると例外をスローするようにプロジェクトを構成する方法を理解しようとしています。これを実現したい状況は2つあります。

  • JPAがデータベースに接続することさえできない場合
  • JPAクエリが結果セットを返すのにタイムアウトしきい値よりも長い時間がかかる場合

これらの2つのシナリオを個別に構成できるか(それぞれに異なるタイムアウトしきい値)、または両方に1つのしきい値を使用できるかどうかはわかりません。

私のプロジェクトは現在次のように設定されています。

  • JPA2.0仕様へのコーディング
  • JPA実装としてHibernate3.5.6を使用する
  • Hibernateでのc3p0接続プールの使用
  • 構成ファイルの使用persistence.xml(必要な場合にのみHibernate固有のプロパティ値を使用)
  • Hibernate固有の構成ファイルを使用しない
4

3 に答える 3

7

JPA2永続性プロパティ「javax.persistence.query.timeout」を使用すると、クエリのタイムアウトを設定できます(基盤となるJDBCドライバーがそれをサポートしていることを前提としています)。

于 2010-10-05T16:18:26.690 に答える
1

Javaクライアントとデータベースサーバーの両方のデフォルトタイムアウトを設定する必要があります。Springを使用している場合は、@ Transactional(timeout = 10)を使用して、最終的にpreparedStatement.setQueryTimeout()ヒントを設定して10秒以内にトランザクションを閉じます。また、サーバーがクライアントタイムアウトより少し上でタイムアウトするようにして、「javaクライアントユーザー」がたとえば15秒でタイムアウトするようにします 。https ://mariadb.com/kb/en/mariadb/query-limits-and-timeouts/

于 2016-03-31T02:23:01.557 に答える
0

Hibernate wikiのこのページでは、タイムアウト設定など、c3p0接続プールを構成する方法について詳しく説明しています。

これらのタイプの詳細は、実際にはJPAやHibernateとはあまり関係がありませんが、データソース/データベース接続(この場合はc3p0)自体で設定する設定であることに注意してください。

于 2010-10-05T15:55:37.987 に答える