Junior — Middle
Meg tudná magyarázni, mit értünk az elterjedési szinteken a tranzakciókezelés során?
sobes.tech MI
Válasz az MI-től
A tranzakciókezelésben az elterjedtségi szintek meghatározzák, hogy egy tranzakció hogyan viselkedik olyan módszerek hívásakor, amelyek szintén tranzakcionálisak lehetnek. Ez fontos annak megértéséhez, hogy egy módszer használni fogja-e a meglévő tranzakciót, újat fog-e létrehozni, vagy tranzakció nélkül fog működni.
A Spring (Java) fő elterjedtségi szintei:
- REQUIRED (alapértelmezett): ha létezik aktuális tranzakció, a módszer csatlakozik hozzá, különben újat hoz létre.
- REQUIRES_NEW: mindig új tranzakciót hoz létre, a jelenlegi (ha van) szünetel.
- SUPPORTS: ha van tranzakció, a módszer abban működik, különben tranzakció nélkül.
- NOT_SUPPORTED: a módszer mindig tranzakció nélkül fut, a jelenlegi tranzakció szünetel.
- MANDATORY: a módszernek meglévő tranzakcióban kell futnia, különben kivétel keletkezik.
- NEVER: a módszernek nem szabad tranzakcióban futnia, különben kivétel keletkezik.
- NESTED: ha van tranzakció, akkor egy beágyazott (savepoint) tranzakció jön létre, különben új.
Példa:
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveData() {
// ez a módszer mindig új tranzakcióban van
}