Middle+
Ile transakcji zostanie otwartych, jeśli w klasie są dwie metody, z których każda ma @Transactional propagation REQUIRES_NEW, a z pierwszej wywołujemy drugą?
sobes.tech AI
Odpowiedź od AI
Przy użyciu adnotacji @Transactional z propagation = REQUIRES_NEW, każda metoda będzie wykonywana w swojej własnej, oddzielnej transakcji. Gdy wywoływana jest pierwsza metoda, otwiera się pierwsza transakcja. Podczas wywołania drugiej metody z pierwszej, bieżąca transakcja jest wstrzymywana, a dla drugiej metody otwiera się nowa transakcja. Po zakończeniu drugiej metody, ta transakcja jest zamykana, a pierwsza wznawia działanie.
W sumie zostaną otwarte 2 transakcje: jedna dla pierwszej metody i jedna dla drugiej.
Przykład:
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodOne() {
// transakcja 1
methodTwo(); // wywołanie drugiej metody
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodTwo() {
// transakcja 2
}