Tranzakciós kommentárok: Tavasz vs. JTA
Most jelentettem be az újat Tanulj tavaszt tanfolyam, amelynek középpontjában az 5. tavasz és a tavaszi bakancs 2 alapjai állnak:
>> ELLENŐRIZZE A FOLYAMATOT1. Áttekintés
Ebben az oktatóanyagban megvitatjuk közötti különbségek org.springframework.transaction.annotation.Transactionional és javax.transaction.Transactionional annotációk.
Kezdjük a konfigurációs tulajdonságaik áttekintésével. Ezután megvitatjuk, hogy az egyes komponensek milyen típusú típusokra alkalmazhatók, és milyen körülmények között használhatjuk az egyiket vagy a másikat.
2. Konfigurációs különbségek
Tavaszi Tranzakciós az annotáció további konfigurációval rendelkezik a JTA-társához képest:
- Elkülönítés - A Spring tranzakciókörű elszigetelést kínál a elkülönítés ingatlan; azonban a JTA-ban ez a szolgáltatás csak csatlakozási szinten érhető el
- Szaporítás - mindkét könyvtárban elérhető a szaporítás ingatlan tavasszal, és a érték ingatlan Java EE-ben; Tavaszi ajánlatok Beágyazott mint kiegészítő terjedési típus
- Csak olvasható - csak tavasszal érhető el csak olvasható ingatlan
- Időkorlát - csak tavasszal érhető el a időtúllépés ingatlan
- Visszagörgetés - mindkét kommentár visszagörgetés-kezelést kínál; A JTA biztosítja a rollbackOn és dontRollbackOn tulajdonságait, míg a Tavasz rollbackFor és noRollbackFor, valamint két további tulajdonság: rollbackForClassName és noRollbackForClassName
2.1. Tavaszi Tranzakciós Megjegyzés konfigurálása
Példaként használjuk és konfiguráljuk a Spring-et Tranzakciós kommentár egy egyszerű autószolgáltatáshoz:
import org.springframework.transaction.annotation.Transactional; @Service @Transactional (isolation = Isolation.READ_COMMITTED, propagation = Propagation.SUPPORTS, readOnly = false, timeout = 30) public class CarService {@Autowired private CarRepository carRepository; @Transactional (rollbackFor = IllegalArgumentException.class, noRollbackFor = EntityExistsException.class, rollbackForClassName = "IllegalArgumentException", noRollbackForClassName = "EntityExistsException") public car save (Car car); car car (Car car) }}
2.3. JTA Tranzakciós Megjegyzés konfigurálása
Tegyük ugyanezt egy egyszerű bérleti szolgáltatás esetén is a JTA segítségével Tranzakciós kommentár:
import javax.transaction.Transactional; @Service @Transactional (Transactional.TxType.SUPPORTS) nyilvános osztály RentalService {@Autowired private CarRepository carRepository; @Transactional (rollbackOn = IllegalArgumentException.class, dontRollbackOn = EntityExistsException.class) public Autókölcsönző (Autó) {return carRepository.save (car); }}
3. Alkalmazhatóság és felcserélhetőség
JTA Tranzakciós az annotáció a CDI által kezelt babokra és a Java EE specifikáció által kezelt babként meghatározott osztályokra vonatkozik, míg a Spring's Tranzakciós az annotáció csak a tavaszi babokra vonatkozik.
Érdemes megjegyezni azt is, hogy a JTA 1.2 támogatását a Spring Framework 4.0 vezették be. Így, használhatjuk a JTA-t Tranzakciós annotáció a tavaszi alkalmazásokban. Viszont fordítva ez nem lehetséges, mivel a tavaszi kommentárokat nem használhatjuk a tavaszi kontextuson kívül.
4. Következtetés
Ebben az oktatóanyagban megvitattuk a különbségeket Tranzakciós annotációk a Spring-től és a JTA-tól, és mikor használhatjuk egyiket vagy másikat.
Mint mindig, az oktatóanyag kódja elérhető a GitHubon.
Perzisztencia alsó