Propagation Supports との春の取引の使用について理解を深めたいと思います。Java ドキュメントでは@Transactional(propagation = Propagation.SUPPORTS)
、トランザクション内から呼び出されたメソッドはトランザクションをサポートしますが、トランザクションが存在しない場合、メソッドは非トランザクションで実行されると記載されています。
に関係なく、これはすでにSpringトランザクションの動作ではありませんPropagation.SUPPORTS
か?
public class ServiceBean {
@Transactional(propagation = Propagation.SUPPORTS)
public void methodWithSupportsTx() {
//perform some database operations
}
}
public class OtherServiceBean {
@Transactional(propagation = Propagation.REQUIRED)
public void methodWithRequiredTx() {
//perform some database operations
serviceBean.methodWithSupportsTx();
}
}
上記のコード例では、アノテーションの有無に関係なく、methodWithSupportsTx()
アノテーションの有無に@Transactional(propagation = Propagation.SUPPORTS)
応じてトランザクションで実行されますよね?methodWithRequiredTx()
@Transactional
では、伝播レベルをサポートする必要性/用途は何ですか?