Transakčné poznámky: Jar vs. JTA

Perzistencia hore

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ

1. Prehľad

V tomto výučbe si povieme niečo o tom rozdiely medzi org.springframework.transaction.annotation.Transactional a javax.transaction.Transactional anotácie.

Začneme prehľadom ich konfiguračných vlastností. Potom si povieme, na aké typy komponentov je možné jednotlivé použiť a za akých okolností môžeme použiť jeden alebo druhý.

2. Rozdiely v konfigurácii

Jarné Transakčné anotácia prichádza s ďalšou konfiguráciou v porovnaní s jej náprotivkom JTA:

  • Izolácia - jar ponúka izoláciu s rozsahom transakcií cez internet izolácia nehnuteľnosť; v JTA je však táto funkcia k dispozícii iba na úrovni pripojenia
  • Propagácia - k dispozícii v oboch knižniciach prostredníctvom servera rozmnožovanie majetok na jar a hodnotu majetok v Java EE; Jarné ponuky Vnorené ako ďalší typ šírenia
  • Iba na čítanie - k dispozícii iba na jar cez internet iba na čítanie nehnuteľnosť
  • Časový limit - k dispozícii iba na jar cez internet čas vypršal nehnuteľnosť
  • Vrátenie zmien - obe anotácie ponúkajú správu vrátenia zmien; JTA poskytuje rollbackOn a dontRollbackOn vlastnosti, zatiaľ čo Spring má rollbackFor a noRollbackFor, plus dve ďalšie vlastnosti: rollbackForClassName a noRollbackForClassName

2.1. Jar Transakčné Konfigurácia anotácie

Ako príklad použijeme a nakonfigurujme jar Transakčné anotácia k jednoduchej automobilovej službe:

importovať org.springframework.transaction.annotation.Transactional; @Service @Transactional (isolation = Isolation.READ_COMMITTED, propagation = Propagation.SUPPORTS, readOnly = false, timeout = 30) verejná trieda CarService {@Autowired private CarRepository carRepository; @Transactional (rollbackFor = IllegalArgumentException.class, noRollbackFor = EntityExistsException.class, rollbackForClassName = "IllegalArgumentException", noRollbackForClassName = "EntityExistsException") public Car save (Car car) {return carRepository.save (car); }}

2.3. JTA Transakčné Konfigurácia anotácie

To isté urobme pre jednoduchú požičovňu pomocou JTA Transakčné anotácia:

import javax.transaction.Transactional; @Service @Transactional (Transactional.TxType.SUPPORTS) verejná trieda RentalService {@Autowired private CarRepository carRepository; @Transactional (rollbackOn = IllegalArgumentException.class, dontRollbackOn = EntityExistsException.class) public Car rent (Car car) {return carRepository.save (car); }}

3. Uplatniteľnosť a zameniteľnosť

JTA Transakčné anotácia sa týka bôbov spravovaných pomocou CDI a tried definovaných ako bean spravovaných špecifikáciou Java EE, zatiaľ čo Spring Transakčné anotácia sa týka iba jarných bôbov.

Za zmienku tiež stojí, že podpora pre JTA 1.2 bola predstavená vo Spring Framework 4.0. Teda môžeme použiť JTA Transakčné anotácia v jarných aplikáciách. Avšak nie je to možné, pretože nemôžeme použiť jarné anotácie mimo jarného kontextu.

4. Záver

V tomto tutoriáli sme diskutovali o rozdieloch medzi Transakčné anotácie z jari a JTA a kedy môžeme použiť jeden alebo druhý.

Ako vždy, kód z tohto tutoriálu je k dispozícii na GitHub.

Perzistencia dno

Práve som oznámil nové Naučte sa jar kurz zameraný na základy jari 5 a Spring Boot 2:

>> SKONTROLUJTE KURZ

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