Sobes.tech
Middle+
22

У нас класс, в нём два метода. Над каждым стоит @Transactional propagation REQUIRES_NEW, и мы из первого метода вызываем второй. Сколько транзакций откроется?

Companies where asked
AmexDev

Answer from AI

sobes.tech AI

При использовании аннотации @Transactional с propagation = REQUIRES_NEW каждый метод будет выполняться в своей отдельной транзакции. Когда первый метод вызывается, открывается первая транзакция. При вызове второго метода из первого текущая транзакция приостанавливается, и открывается новая транзакция для второго метода. После завершения второго метода вторая транзакция закрывается, и первая возобновляется.

Итого, откроется 2 транзакции: одна для первого метода и одна для второго.

Пример:

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodOne() {
    // транзакция 1
    methodTwo(); // вызов второго метода
}

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodTwo() {
    // транзакция 2
}