Middle+
Koliko transakcija će se otvoriti ako u jednoj klasi postoje dve metode, od kojih svaka ima @Transactional propagation REQUIRES_NEW, i iz prve metode pozivamo drugu?
sobes.tech АИ
Одговор од АИ
При использовании аннотации @Transactional с propagation = REQUIRES_NEW каждый метод будет выполняться в своей отдельной транзакции. Когда первый метод вызывается, открывается первая транзакция. При вызове второго метода из первого текущая транзакция приостанавливается, и открывается новая транзакция для второго метода. После завершения второго метода вторая транзакция закрывается, и первая возобновляется.
Итого, откроется 2 транзакции: одна для первого метода и одна для второго.
Пример:
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodOne() {
// транзакция 1
methodTwo(); // вызов второго метода
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodTwo() {
// транзакция 2
}