Che cos'è una transazione?

2

Durante la lettura delle esercitazioni di Spring mi capita spesso di trovare l'annotazione @Transactional .

Quando eseguo il google, ottengo la documentazione che dice cose come:

Comprehensive transaction support is among the most compelling reasons to use the Spring Framework. The Spring Framework provides a consistent abstraction for transaction management that delivers the following benefits:

o

A transaction manager is the part of an application that is responsible for coordinating transactions across one or more resources. In the Spring framework, the transaction manager is effectively the root of the transaction system. Hence, if you want to enable transactions on a component in Spring, you typically create a transaction manager bean and pass it to the component.

Non ho idea di cosa si stiano riferendo qui.

Qualcuno può spiegare?

    
posta dwjohnston 08.07.2015 - 23:52
fonte

2 risposte

8

Nella sua accezione più ampia, una "transazione" è un gruppo di azioni che dovrebbero essere eseguite come se fossero un'unica azione "di massa". Il termine è più spesso usato nel contesto dei database, ma può essere applicato a molti tipi di programmi (in particolare quelli che implementano un modello di comando). Quando parliamo di database, e spesso anche se non lo siamo, vogliamo che le transazioni abbiano le cosiddette proprietà ACID :

  • Atomicità - La transazione è una singola unità indistruttibile. Non può essere parzialmente applicato o parzialmente annullato. È completamente fatto o non fatto affatto.

  • Coerenza - L'applicazione / database / qualsiasi cosa deve essere in uno stato valido sia prima che dopo la transazione. Se il tentativo di eseguire una transazione produce uno stato non valido, allora dobbiamo "rollback" all'ultimo stato valido.

  • Isolamento - Ogni transazione è separata da ogni altra transazione. Nessuna transazione può mai "intercalare". Vengono sempre eseguiti uno alla volta (o in modo indistinguibile da "uno alla volta").

  • Durata: una volta che la transazione è stata eseguita, rimane eseguita per sempre. Questo è per lo più rilevante per i database, dove significa che il cambiamento dei dati è stato effettivamente commesso sul disco, in modo che i nuovi dati non possano essere persi anche se la macchina si riavvia improvvisamente.

Non tutti i tipi di transazioni devono avere tutte e quattro le proprietà, ma di solito quando la parola "transazione" viene utilizzata in un contesto di programmazione, che implica un sistema che impone almeno alcune se non tutte. Credo che Spring si riferisca alle transazioni di database e pretenda di far rispettare tutte queste proprietà.

    
risposta data 09.07.2015 - 00:07
fonte
-1

Una transazione è un insieme di azioni correlate l'una con l'altra in qualche modo. La transazione è ritenuta completa quando tutte le azioni sono state eseguite con successo.

Uno dei principali vantaggi di una transazione è la possibilità di eseguire il rollback.

In fase di sviluppo abbiamo Pattern di comando - i comandi sono anche transazioni che possono essere eseguite, ripristinate e messe in coda.

    
risposta data 08.07.2015 - 23:56
fonte

Leggi altre domande sui tag