2

ここでトランザクションをロールバックする必要がありますか?

@Service
public class Serv {
    @Transactional
    public void method1() {
        method2();
    }
    private void method2(){
        throw new RuntimeException();
    }
}

それとも何かに依存しているのでしょうか?

(今日まで、私は説明された行動について 100% 確信していました。しかし、インタビュアーはそれは場合によると言いました。私は彼に同意しませんでしたが、もちろん役に立ちません。)

4

1 に答える 1

1

最適/通常の結果は、あなたが答えたようにロールバックですが、インタビュアーは状況に応じて一般的なステートメントを言いました

インタビュアーは、期待どおりにロールバックしない時期を知っているかどうかを確認するつもりだったのかもしれません

@Transactionalつまり、実際に機能していると仮定するべきで@Transactionalはありません。機能していない場合はロールバックがないため、最初に確認する必要があります。

たとえば、同じクラスでトランザクション メソッドを呼び出す場合、同じクラスの method3() から method1() が呼び出されると、機能@Transactionalせず、ロールバックされません。

于 2019-12-12T14:39:12.737 に答える