Sobes.tech
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
}