Potrebbe spiegare la differenza tra i due tipi di operazioni:Qual è la differenza tra un "operazione Primavera" e una "operazione Hibernate"
- Hibernate transazione
- transazione Primavera
Inoltre vorrei sapere l'annotazione @Transactional
.
Potrebbe spiegare la differenza tra i due tipi di operazioni:Qual è la differenza tra un "operazione Primavera" e una "operazione Hibernate"
Inoltre vorrei sapere l'annotazione @Transactional
.
Bene per i principianti sono entrambe le transazioni, ma comprendono diversi concetti e componenti.
TL; DR
offerte Hibernate con specifiche operazioni di database, mentre la primavera offre un servizio generale di gestione delle transazioni. @Transactional
è un bel modo di configurare il comportamento della gestione delle transazioni.
La lunga storia:
transazioni
operazioni siano sostanzialmente le unità di lavoro (ad esempio modifiche a qualcosa) che sono gestiti come una singola operazione che può essere sia commit o il rollback. Esistono molti tipi diversi di transazioni nel mondo java: database, sistemi di messaggistica come JMS, transazioni tra applicazioni (per coloro che non sono deboli di cuore) o qualsiasi altra cosa che potrebbe dover essere inclusa in una transazione. Nelle transazioni standard Java vengono gestite utilizzando lo Java Transaction API che stabilisce le regole su come partecipare a una transazione.
Hibernate
Hibernate è un ORM per astrarre componenti di database a oggetti Java, così le sue operazioni sono specificamente legati alle modifiche apportate all'interno di un database. Una transazione può essere composta da una o più scritture su varie tabelle di database che vengono tutte confermate una volta completata l'operazione. Rollback della transazione, ad es. F ci sono errori durante l'operazione, consente di annullare tutte le modifiche.
Primavera
Al suo livello più basso Spring è un framework applicativo per la gestione della configurazione e delle dipendenze tra gli oggetti. Inoltre, fornisce un'interfaccia per la gestione di servizi di livello superiore che vengono utilizzati in applicazioni moderne come database, servizi di messaggistica, framework MVC e transazioni.
Spring è progettato per essere utilizzato come un master onnicomprensivo di oggetti e servizi all'interno dell'applicazione, quindi il suo concetto di transazione è a un livello superiore rispetto alle transazioni specifiche del database con cui ibernare si preoccupa. Spring Transactions sono progettati per fornire un controllo a grana fine di tutte le risorse transazionali e al contempo estrapolare la codifica spesso disordinata necessaria per coordinare le transazioni.
@Transactional
Primavera fornisce alcuni metodi differenti per l'utilizzo di operazioni - tra gli altri aspetti là basato su XML, la codifica per l'API e le transazioni dichiarative a base di annotazione.Le transazioni basate su annotazioni sono utili perché non è necessario aggiungere il codice boilerplate di gestione delle transazioni alla tua app (anche utilizzando PlatformTransactionManager tramite l'API ha un bel po 'di overhead di codifica).
Quindi, in pratica, con lo @Transactional
è in fase di runtime che esegue la scansione del codice base per le classi e i metodi @Transactional e li include nel codice di gestione specifico della transazione, in base a ciò che è stato configurato tramite l'annotazione. Quindi, un metodo come questo:
@Transactional(propagation = REQUIRES_NEW, rollbackFor = {Exception.class})
public void saveAndSendMessage(Foo foo) throws Exception {
dbManager.save(foo);
Bar bar = transform(foo);
jmsSystem.send(bar);
}
può avere primavera impostare una nuova operazione per il sistema di database e JMS, e coordinare senza bisogno di aggiungere tutto il codice specifico gestione tx automagicamente.
Un gestore transazioni Spring (se configurato correttamente) può gestire le transazioni di ibernazione. '@ Transactional' è il modo per dichiarare i metodi transazionali in' Spring'. Quindi la differenza è la stessa di una ruota di macchina e di un volante, quando "configurato correttamente" ruotando il volante si muovono le ruote dell'auto ... ed entrambe sono ruote :). – Augusto