Middle+
Câte tranzacții vor fi deschise dacă într-o clasă cu două metode, fiecare cu @Transactional propagation REQUIRES_NEW, și din prima metodă se apelează a doua?
sobes.tech AI
Răspuns de la AI
Atunci când se utilizează adnotarea @Transactional cu propagation = REQUIRES_NEW, fiecare metodă va fi executată într-o tranzacție separată. Când se apelează prima metodă, se deschide prima tranzacție. La apelarea celei de-a doua metode din prima, tranzacția curentă este suspendată, iar pentru a doua metodă se deschide o nouă tranzacție. După finalizarea celei de-a doua metode, această tranzacție se închide, iar prima reia.
În total, se vor deschide 2 tranzacții: una pentru prima metodă și una pentru a doua.
Exemplu:
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodOne() {
// tranzacție 1
methodTwo(); // apel al celei de-a doua metode
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodTwo() {
// tranzacție 2
}