Per essere precisi, non intendi il blocco ottimistico, ma la concorrenza ottimistica (senza blocco). L'utilizzo di un timestamp per la versione è solo per il supporto del database legacy, perché un database moderno può (almeno teoricamente) funzionare più velocemente della sua precisione di archiviazione un timestamp.
L'uso della proprietà della versione intera è molto semplice:
- In inserimento:imposta la versione su 1
- Su aggiornamento ed eliminazione:aumentare la versione con 1 e aggiungere "where [email protected] " a ogni istruzione sql. Restituisce il numero di record modificati. Genera un'eccezione StaleObjectStateException quando il numero di record modificati è diverso dal previsto.
Personalmente, non creerei due applicazioni separate scrivendo gli stessi dati in una situazione non legacy, perché ciò significa che la logica aziendale deve essere duplicata e le modifiche devono essere applicate a due applicazioni, anche quando la modifica è rilevante solo per una delle le applicazioni.