0

この Hibernate サンプルについて質問があります。Hibernate docs または Manning Persistence with JPA で答えが見つかりませんでした。プレーンな JDBC を使用するとどうなるか、誰かが説明できるかもしれません。

Session session = null;
Transaction tx = null;
try {
    session = sessionFactory.openSession();
    tx = session.beginTransaction();

    // Transaction actions   

    tx.commit();
} 
catch (RuntimeException ex) {
    try {
        tx.rollback();
    } 
    catch (RuntimeException rbEx) {
        log.error("Couldn’t roll back transaction", rbEx);
    }
    throw ex;
} 
finally {
    session.close();
}

私の質問は、トランザクション ロールバック メソッドが例外をスローするとどうなるかということです。一部の取引データはデータベースに保存されますか? この例外を処理するにはどうすればよいですか?

4

1 に答える 1

1

私の質問は、トランザクション ロールバック メソッドが例外をスローするとどうなるかということです。

例外が何であるかによって異なります。

一部の取引データはデータベースに保存されますか?

詳細不明。データベースがトランザクションの開始に対応するポイントまで回復できることが期待されます。ただし、それが不可能なシナリオもあります。たとえば、ディスク ドライブを紛失し、ホット スタンバイがない場合などです。

この例外を処理するにはどうすればよいですか?

一般的には、できません。例外が発生し、その意味や原因がわからない場合、(典型的なデータベース アプリケーションで) 実行できる唯一の賢明な方法は、アプリケーションをシャットダウンし、人間に問題を調査してもらうことです。

于 2013-10-09T08:30:56.447 に答える