24

春に@Transactionalアノテーション付きメソッドをネストすることは可能ですか? 次のようなことを考えてみましょう:

@Transactional
public void a() {
    obj.b();
}

@Transactional
public void b() {
    // ... 
}

このような場合、 b() でロールバックし、 a() でロールバックするとどうなりますか?

4

1 に答える 1

41

メソッドの 2 番目の@Transactionalアノテーションb()は必要ありません。これは、デフォルト@Transactionalで の伝播があるREQUIREDためです。したがって、メソッドによって呼び出されるメソッドa()はトランザクションになります。メソッドによって呼び出されたメソッド内で新しいトランザクションを開始しようとしているa()場合は、伝播ルールを変更する必要があります。トランザクションの伝播についてお読みください。

于 2011-07-09T09:18:56.207 に答える