Lavorando allo sviluppo di un software multi-utente ho dovuto affrontare il problema della gestione degli
accessi concorrenti ai dati, ed in particolare degli accessi concorrenti in modifica. In pratica, se n utenti accedono allo stesso record per modificarlo si avrà la seguente situazione da gestire:
- l'utente-1 accede al record
- l'utente-2 accede al record e lo modifica
- l'utente-1 modifica il record (senza considerare le modifiche apportate successivamente dall' utente-2 !)
La mancata gestione dello scenario sopra illustrato causerebbe la creazione di dati sporchi. Un metodo per evitare questo problema è il
locking ottimistico, che consiste nel controllare la "versione" del record prima di ogni update, permettendone la modifica solo se la versione del record sul database corrisponde alla versione in memoria, letta quando era stato effettuato l'accesso al record.
JPA offre la possibilità di abilitare la gestione automatica del locking ottimistico, attraverso l'annotazione @Version:
@Version
private int version;
Basta aggiungere il suddetto codice al nostro JavaBean, ed aggiungere sul database il campo version di tipo intero.
Nessun commento:
Posta un commento