2013-02-12 17 views
5

Sono nuovo di JPA. E sono arrivato a questa annotazione @Version. Nella documentazione per questa annotazione che dice:Che cos'è il blocco ottimistico in JPA?

"Questa annotazione specifica il campo versione o la proprietà di una classe di entità che serve come il suo valore di blocco ottimistico La versione viene utilizzato per garantire l'integrità durante l'esecuzione del . operazione di unione e controllo ottimistico della concorrenza. "

Che cosa significa blocco ottimistico e in che modo è effettivamente correlato a questa annotazione? Grazie

+2

Trova informazioni [sotto questo collegamento] (http://bit.ly/Y9IIO1). –

+1

Consenti a tutti di modificare la stessa cosa contemporaneamente. Quando qualcuno commette il cambiamento, controlla se ci sono state ** altre ** modifiche commesse da quando hanno iniziato il cambiamento. Se è così, piangi. (ad esempio, ritirare le modifiche e costringerle a ottenere una nuova copia). Solitamente coinvolge i numeri di versione come un modo per tenere traccia dei set di modifiche. –

risposta

5

farla breve ...

Ogni record di un'entità con un campo annotato come @Version è codificata con una versione come in SVN. Ogni volta che l'entità viene aggiornata commettendo (e svuotando!) Una transazione, un controllo assicura che le versioni dell'entità corrente e la voce nel database corrispondano. Un errore in questo controllo ha come risultato un OptimisticLockException, perché qualcuno ha eseguito una modifica su quel registro prima dell'operazione corrente.

Ottimista si basa il concetto di

"non ho bisogno di bloccare questa voce, nessuno lo toccherà"

mentre un blocco pessimistico in realtà blocca alcune operazioni (come LEGGI o WRITE) su un dato di entrata assumendo

"qualcuno cercherà di aggiornare questa entità, mentre io lavoro"

Problemi correlati