Junior — Middle
Vai jūs varat izskaidrot, kas ir domāts ar izplatīšanas līmeņiem transakciju pārvaldībā?
sobes.tech AI
Atbilde no AI
Transakciju pārneses līmeņi nosaka, kā rīkosies transakcija, izsaucot metodes, kas arī var būt transakcijas. Tas ir svarīgi, lai saprastu, vai metode izmantos esošo transakciju, izveidos jaunu vai darbosies bez transakcijas.
Galvenie pārneses līmeņi Spring (Java):
- REQUIRED (noklusējuma): ja ir esoša transakcija, metode pievienojas tai, pretējā gadījumā tiek izveidota jauna.
- REQUIRES_NEW: vienmēr izveido jaunu transakciju, apturot esošo (ja tāda ir).
- SUPPORTS: ja ir transakcija, metode tajā darbojas, pretējā gadījumā bez transakcijas.
- NOT_SUPPORTED: metode vienmēr darbojas bez transakcijas, apturot esošo.
- MANDATORY: metode jāizpilda esošā transakcijā, pretējā gadījumā tiek izsviesta izņēmuma kļūda.
- NEVER: metode nedrīkst darboties transakcijā, pretējā gadījumā tiek izsviesta izņēmuma kļūda.
- NESTED: ja ir transakcija, tiek izveidots iekšējs (savepoint) transakcija, pretējā gadījumā jauna.
Piemērs:
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveData() {
// šī metode vienmēr ir jaunā transakcijā
}