私はDBのハンドリングメソッドを持っています。これは、他のメソッドを呼び出します。春にもサブメソッドの@Transactional注釈を付ける必要がありますか?
何か問題が生じた場合、すべてをロールバックしたいので、メインメソッドに@Transactionalアノテーションを挿入します。
質問:私はこの注釈をサブメソッドに対しても置くべきですか、またはサブメソッドがトランザクションメソッドから呼び出されたことを知ります。例えば
、例外が発生した消去方法では、どのように私は書き込み部分もロールバックされますことを確認することができます:それは@Transactional
でアノテート方法に遭遇したとき
@Transactional
public void maintDbTings() {
writing();
deleting();
}
@Transactional //do I need this?
public void writing() {
//no exceptions
}
@Transactional //do I need this?
public void deleting() {
//exception occurs
}
を、私はあなたがたと注釈が必要です。彼らが自分のトランザクションを不必要に作成していないことを確認し、可能であれば 'mainDbThings'トランザクションを使用してください。 –
しかし、それらがプライベートでメインメソッドからのみ呼び出されるのであれば?削除メソッドに例外がある場合、書き込みメソッドはロールバックされますか? – victorio
mainDbTingsがすでにトランザクションを開始しているので、mainDbTingsからメソッドが呼び出されている場合は、これを必要としません。しかし、これらのメソッドはプライベートでなければなりません。 mainDbTingsを使わずに呼び出すことができ、トランザクションでなければならない場合は、注釈も付ける必要があります。 –