1

Hibernate によってスローされた例外はチェックされておらず、私が他の場所で読んだことから、それらはコードでキャッチされるべきではないようです。ただし、これは、たとえば一時的なデータベース エラーが発生すると、エラーが発生したスレッドが終了し、アプリケーションが応答しなくなることを意味します。それはどのように行われるべきですか?

発生する例外の例:

javax.persistence.PersistenceException
Caused by: org.hibernate.exception.GenericJDBCException: could not insert
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction

これは、アプリケーションが数時間または数日間実行されている場合に発生します。

私が読んだことの多くは、Spring または同様のものに統合されたときに Hibernate を使用する方法について述べています。したがって、各 Web 要求は新しいスレッドを開始し、そのスレッドが終了すると、その 1 つの Web 要求のみに影響します。しかし、スタンドアロンの Java アプリケーションの場合、どのように対処すればよいのでしょうか?

4

3 に答える 3

2

RuntimeException をキャッチしても問題はありません。チェックされていないのは、そうしないという選択肢を与えるだけです。

例外を処理するための特定の戦略 (再試行する、またはアプリ ロジックで何かをトリガーするなど) を念頭に置いている場合は、必ずそれをキャッチしてください。

于 2012-05-23T03:31:29.870 に答える
1

Hibernate Exceptions は、それらをキャッチすることを強制したくないため、チェックされていません。DAO または他の場所で処理する場合は、アプリケーションの設計次第です。

ケースを処理する必要がある場合 (Catch) PersistenceException、修正措置を講じて、何か悪いことが起こったことをユーザーに通知します。

一般的なメモに関する他の回答で強調されているように、キャッチRuntimeExceptionして是正措置を講じても害はありませRuntimeExceptionCheckedException

于 2012-05-23T03:39:44.137 に答える
0

スタンドアロン アプリケーションの場合でも、Spring を使用できます。結局のところ、Spring は、ロードして実行するように構成した一連の Java クラスにすぎません。中央には、applicationContext.xml ファイルの単なるオブジェクト バージョンである ApplicationContext オブジェクトがあります。

基本的に、「public static void main(String[] args)」で、xml ファイルから ApplicationContext を作成します。ApplicationContext はインターフェイスであるため、おそらく FileSystemXmlApplicationContext(String configLocation) のコンストラクターを呼び出すことに注意してください。

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/context/support/FileSystemXmlApplicationContext.html#FileSystemXmlApplicationContext(java.lang.String )

http://static.springsource.org/spring/docs/3.1.0.M1/spring-framework-reference/html/beans.htmlをチェックして、セクション 3.2 を詳しく見てください。

于 2012-06-05T12:14:17.330 に答える