Sobes.tech
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
}