Junior — Middle
Ar galite paaiškinti, kas suprantama po plitimo lygiais transakcijų valdyme?
sobes.tech AI
Atsakymas iš AI
Transakcijų valdymo plitimo lygiai nustato, kaip elgsis transakcija, kviečiant metodus, kurie patys gali būti transakcionalūs. Tai svarbu norint suprasti, ar metodas naudos esamą transakciją, sukurs naują ar veiks be transakcijos.
Pagrindiniai plitimo lygiai Spring (Java):
- REQUIRED (numatytasis): jei yra esama transakcija, metodas prie jos prisijungs, kitaip sukuriama nauja.
- REQUIRES_NEW: visada sukuria naują transakciją, sustabdydama esamą (jei yra).
- SUPPORTS: jei yra transakcija, metodas veikia joje, kitaip be transakcijos.
- NOT_SUPPORTED: metodas visada veikia be transakcijos, sustabdydamas esamą.
- MANDATORY: metodas turi būti vykdomas esamoje transakcijoje, kitaip išmetama išimtis.
- NEVER: metodas neturi būti vykdomas transakcijoje, kitaip išmetama išimtis.
- NESTED: jei yra transakcija, sukuriama įdėta (savepoint) transakcija, kitaip nauja.
Pavyzdys:
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveData() {
// šis metodas visada yra naujoje transakcijoje
}