Transakcijske bilješke: Proljeće nasuprot JTA

Vrh postojanosti

Upravo sam najavio novo Uči proljeće tečaj, usredotočen na osnove Spring 5 i Spring Boot 2:

>> PROVJERITE TEČAJ

1. Pregled

U ovom uputstvu ćemo razgovarati razlike između org.springframework.transaction.annotation.Transactional i javax.transaction.Transational bilješke.

Započet ćemo s pregledom njihovih konfiguracijskih svojstava. Zatim ćemo razgovarati o tome na koje se vrste komponenata može primijeniti i u kojim okolnostima možemo koristiti jednu ili drugu.

2. Razlike u konfiguraciji

Proljetni Transakcijski napomena dolazi s dodatnom konfiguracijom u usporedbi s JTA kolegom:

  • Izolacija - Spring nudi izolaciju obuhvaćenu transakcijama putem izolacija imovina; međutim, u JTA-u je ova značajka dostupna samo na razini veze
  • Razmnožavanje - dostupno u obje knjižnice putem razmnožavanje imanje u proljeće i vrijednost svojstvo u Java EE; Proljetne ponude Ugniježđena kao dodatni tip širenja
  • Samo za čitanje - dostupno samo u proljeće do samo za čitanje imovine
  • Istek vremena - dostupan samo u proljeće do pauza imovine
  • Povrat - obje bilješke nude upravljanje povratom; JTA pruža rollbackOn i dontRollbackOn svojstva, dok proljeće ima vraćanje za i noRollbackFor, plus dva dodatna svojstva: rollbackForClassName i noRollbackForClassName

2.1. Proljeće Transakcijski Konfiguracija bilješki

Kao primjer, upotrijebimo i konfigurirajte Spring Transakcijski napomena o jednostavnom servisu automobila:

uvoz org.springframework.transaction.annotation.Transactional; @Service @Transactional (isolation = Isolation.READ_COMMITTED, propagation = Propagation.SUPPORTS, readOnly = false, timeout = 30) javna klasa CarService {@Autowired private CarRepository carRepository; @Transactional (rollbackFor = IllegalArgumentException.class, noRollbackFor = EntityExistsException.class, rollbackForClassName = "IllegalArgumentException", noRollbackForClassName = "EntityExistsException") javni povratak automobila (CarReRequest) carve; }}

2.3. JTA Transakcijski Konfiguracija bilješki

Učinimo isto za jednostavnu uslugu najma koja koristi JTA Transakcijski napomena:

import javax.transaction.Transactional; @Service @Transactional (Transactional.TxType.SUPPORTS) javna klasa RentalService {@Autowired private CarRepository carRepository; @Transactional (rollbackOn = IllegalArgumentException.class, dontRollbackOn = EntityExistsException.class) javni Najam automobila (Car car) {return carRepository.save (car); }}

3. Primjenjivost i zamjenjivost

JTA Transakcijski napomena odnosi se na CDI-upravljane grahove i klase definirane kao upravljani grah Java EE specifikacijom, dok Spring-ove Transakcijski napomena odnosi se samo na proljetni grah.

Također je vrijedno napomenuti da je podrška za JTA 1.2 uvedena u Spring Framework 4.0. Tako, možemo koristiti JTA Transakcijski napomena u proljetnim aplikacijama. Međutim, obrnuto nije moguće jer ne možemo koristiti proljetne bilješke izvan proljetnog konteksta.

4. Zaključak

U ovom vodiču razgovarali smo o razlikama između Transakcijski napomene iz Springa i JTA-e te kada možemo koristiti jedno ili drugo.

Kao i uvijek, kôd iz ovog vodiča dostupan je na GitHub-u.

Dno postojanosti

Upravo sam najavio novo Uči proljeće tečaj, usredotočen na osnove Spring 5 i Spring Boot 2:

>> PROVJERITE TEČAJ

$config[zx-auto] not found$config[zx-overlay] not found