2011-09-27 11 views

risposta

13

NHibernate Version viene utilizzato quando si desidera implementare Optimistic concurrency control. Senza abilitare il controllo della concorrenza Optimistic e il blocco dell'applicazione verrà utilizzata la strategia "Ultimi commit vinti". Gli utenti potrebbero perdere gli aggiornamenti se due transazioni modificano lo stesso oggetto all'incirca nello stesso momento. La strategia più appropriata si chiama "First commit wins". In questo scenario, la seconda transazione fallirà con un errore che direbbe qualcosa come: Qualcuno ha già commesso le modifiche ai dati che si sta per eseguire il commit. Hai lavorato con dati stanti . Si prega di riavviare la conversazione con nuovi dati.

Da Java Persistence with Hibernate:

Hibernate fornisce versioning automatico. Ogni istanza di entità ha una versione , che può essere un numero o un timestamp. Hibernate incrementa la versione di un oggetto quando viene modificata, confronta automaticamente le versioni, e genera un'eccezione se viene rilevato un conflitto. Di conseguenza, l'utente aggiunge questa proprietà di versione a tutte le classi di entità persistenti su attiva il blocco ottimistico. ... Il numero di versione è solo un valore contatore: non ha alcun valore semantico utile . La colonna aggiuntiva nella tabella delle entità viene utilizzata dall'applicazione Hibernate. Ricordare che tutte le altre applicazioni che accedono allo stesso database possono (e probabilmente dovrebbero) implementare anche versioni ottimistiche e utilizzare la stessa colonna della versione .

+0

Grazie per la spiegazione. –

Problemi correlati