Sobes.tech
Назад к вопросам
Middle+
4

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

Компании, где спрашивали
AmexDev

Ответ от нейросети

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
}