Junior — Middle
Môžete vysvetliť, čo sa rozumie pod úrovňami propagácie pri správe transakcií?
sobes.tech AI
Odpoveď od AI
Úrovne šírenia v riadení transakcií určujú, ako sa správa transakcia pri volaní metód, ktoré môžu byť tiež transakčné. Je dôležité pochopiť, či metóda použije existujúcu transakciu, vytvorí novú alebo bude fungovať bez transakcie.
Hlavné úrovne šírenia v Spring (Java):
- REQUIRED (predvolené): ak existuje aktuálna transakcia, metóda sa k nej pripojí, inak sa vytvorí nová.
- REQUIRES_NEW: vždy vytvorí novú transakciu, aktuálna (ak existuje) je pozastavená.
- SUPPORTS: ak existuje transakcia, metóda v nej pracuje, inak bez transakcie.
- NOT_SUPPORTED: metóda sa vždy vykonáva bez transakcie, aktuálna transakcia je pozastavená.
- MANDATORY: metóda musí byť vykonaná v existujúcej transakcii, inak je vyhodená výnimka.
- NEVER: metóda by nemala byť vykonaná v transakcii, inak je vyhodená výnimka.
- NESTED: ak existuje transakcia, vytvorí sa vnorená (savepoint) transakcia, inak nová.
Príklad:
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveData() {
// táto metóda je vždy v novej transakcii
}