2017-08-11 9 views
1

私は春のトランザクション管理を学んでいます。 私には2つの質問があります。 私は方法がある場合:プライベートメソッドを呼び出すときの春のトランザクション

方法2で例外がある場合
@Transactional 
public method1(){ 
method2() 
} 

public method2(){ 
dao.save() 
} 

、ロールバックがあるでしょうか?

もう一つの問題: 私は方法がある場合:方法2での例外がある場合

@Transactional 
public method1(){ 
method2() 
} 

private void method2(){ 
dao.save() 
} 

を、ロールバックがあるでしょうか?ありがとう。

+0

どちらの場合もロールバックされます – StanislavL

答えて

0

はい、ロールバックされます。 プライベートメソッドは同じトランザクション内で実行されます。プライベートメソッド@Transactionalを使用することはできません。エラーを起こさずには動作しません。ない傍受の定義によるものであり、対象物を、によりSpringのAOPフレームワークのプロキシベースの性質のために

以内に呼び出します。この動作はSpring Docsに説明されています。 JDKプロキシの場合、 プロキシでのパブリックインターフェイスメソッド呼び出しのみが代行受信されます。

1

両方に該当します。トランザクションメソッドは、メソッドの実行中にエラーが発生してはならないことを意味します。

内部から呼び出しているメソッドのいずれかにエラーがある場合、これらのエラーが伝播され、トランザクションが失敗してロールバックされます。

+0

ありがとうございました。 – brest1007

関連する問題