0

トランザクションのロールバックについて明らかに助けが必要です。Spring/JPA/Hibernate アプリケーションに取り組んでいます。

私にとっては、それらがキャッチされたとしてRuntimeException も、トランザクションをロールバックしています。私はこれをいくつかのテスト (もう持っていないので残念ながらここに置くことはできません) と測定値から推測します。

しかし、次のコードで別の動作が発生しています。

public class Service implements IService {

  @Transactional
  public void test()
  {
    // ...
    try {
      throw new RuntimeException();
    } catch (RuntimeException re) {
    }
    foo.setBar(barValue);
    this.fooDao.save(foo);
  }
}

コントローラーからこれを実行した後、barパラメーターの変更がデータベースに存在します。これは、トランザクションがロールバックされていないことを意味します。

今質問

キャッチされた runtimeException はロールバックにつながりますか、それとも間違っていますか?

4

1 に答える 1

1

たとえばRuntimeException、チェックされていない例外をキャッチすると、トランザクションはロールバックされません。

デフォルトでは、未チェックの例外が原因でメソッドが終了した場合、トランザクションはロールバックされます。デフォルトでは、チェック済み例外はロールバックをトリガーしません。

于 2013-04-22T16:02:55.763 に答える