Sobes.tech
Middle+

Koľko transakcií sa otvorí, ak v triede sú dve metódy, z ktorých každá má @Transactional propagation REQUIRES_NEW, a z prvej voláme druhú?

sobes.tech AI

Odpoveď od AI

Pri použití anotácie @Transactional s propagation = REQUIRES_NEW bude každá metóda vykonaná v svojej vlastnej samostatnej transakcii. Keď je volaná prvá metóda, otvorí sa prvá transakcia. Pri volaní druhej metódy z prvej je aktuálna transakcia pozastavená a otvorí sa nová pre druhú metódu. Po dokončení druhej metódy sa táto transakcia zatvorí a prvá pokračuje.

Celkom sa otvorí 2 transakcie: jedna pre prvú a jedna pre druhú.

Príklad:

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodOne() {
    // transakcia 1
    methodTwo(); // volanie druhej metódy
}

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodTwo() {
    // transakcia 2
}