春に@Transactionalアノテーション付きメソッドをネストすることは可能ですか? 次のようなことを考えてみましょう:
@Transactional
public void a() {
obj.b();
}
@Transactional
public void b() {
// ...
}
このような場合、 b() でロールバックし、 a() でロールバックするとどうなりますか?
春に@Transactionalアノテーション付きメソッドをネストすることは可能ですか? 次のようなことを考えてみましょう:
@Transactional
public void a() {
obj.b();
}
@Transactional
public void b() {
// ...
}
このような場合、 b() でロールバックし、 a() でロールバックするとどうなりますか?
メソッドの 2 番目の@Transactional
アノテーションb()
は必要ありません。これは、デフォルト@Transactional
で の伝播があるREQUIRED
ためです。したがって、メソッドによって呼び出されるメソッドa()
はトランザクションになります。メソッドによって呼び出されたメソッド内で新しいトランザクションを開始しようとしているa()
場合は、伝播ルールを変更する必要があります。トランザクションの伝播についてお読みください。