Sobes.tech
Middle+

Kiek transakcijų bus atidaryta, jei viename klasteryje yra du metodai, kiekvienas su @Transactional propagation REQUIRES_NEW, ir iš pirmojo metodo kviečiame antrą?

sobes.tech AI

Atsakymas iš AI

Naudojant @Transactional anotaciją su propagation = REQUIRES_NEW, kiekvienas metodas bus vykdomas savo atskiroje transakcijoje. Kai kviečiamas pirmasis metodas, atidaroma pirmoji transakcija. Kai iš pirmojo metodo kviečiamas antrasis, dabartinė transakcija yra sustabdyta, ir atidaroma nauja transakcija antram metodui. Baigus antram metodui, ši transakcija uždaroma, ir pirmoji tęsiasi.

Iš viso bus atidarytos 2 transakcijos: viena pirmam metodui ir kita antram.

Pavyzdys:

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodOne() {
    // transakcija 1
    methodTwo(); // antro metodo iškvietimas
}

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