Sobes.tech
Middle+

Hány tranzakció nyílik meg, ha egy osztályban két módszer van, mindkettő @Transactional propagation REQUIRES_NEW, és az első módszer hívja a másodikat?

sobes.tech MI

Válasz az MI-től

Amikor az @Transactional annotációt propagation = REQUIRES_NEW értékkel használjuk, minden módszer saját külön tranzakcióban fog végrehajtódni. Amikor az első módszert hívják, megnyílik az első tranzakció. Az első módszerből a második hívásakor a jelenlegi tranzakció szünetel, és egy új tranzakció nyílik a második módszerhez. A második módszer befejezése után ez a tranzakció bezárul, és az első folytatódik.

Összesen 2 tranzakció nyílik: egy az első és egy a második módszerhez.

Példa:

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodOne() {
    // tranzakció 1
    methodTwo(); // második módszer hívása
}

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