15
@Entity
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private int salary;
@Version
private long version;
// ...getters and setters
}
- E 'necessario creare setter/getter per
version
? - Quando si mantiene questa entità con Hibernate, non è necessario impostare questo valore manualmente, giusto?
- Cos'altro devo configurare per utilizzare il controllo ottimistico della concorrenza con Spring
hibernateTemplate.saveOrUpdate
? Tutti i database sono supportati? - Come testare questa entità? Nel mio database tutti i miei record che mostrano il campo della versione hanno il valore di 0
- Chiamando
hibernateTemplate.saveOrUpdate
incrementerà il valore della versione ogni volta?
@KLE in caso di chiamata da 2 utente hibernatetemplate.saveorupdate allo stesso tempo, non è necessario effettuare un controllo extra quando la chiamata chiama hibernatetemplate.saveorupdate? qualche eccezione lancia? – cometta
@cometta Il punto non è quello di salvare o meno, ma da dove provengono i dati. In una transazione ** se leggi un'entità dal database **, le informazioni sulla versione sono aggiornate. Quando lo salvi, viene gestito automaticamente. Se un giorno ti capita di ottenere i dati da un'altra fonte (ad esempio il post di un modulo) e ricreare l'entità, allora devi occuparti della versione da te. – KLE
Una spiegazione abbastanza buona è qui: http://en.wikibooks.org/wiki/Java_Persistence/Locking – Zilvinas