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 アプリケーションの場合、どのように対処すればよいのでしょうか?