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