Je suis nouveau à utiliser le mécanisme de "verrouillage optimiste" - J'utilise Hibernate (dans Jboss) et Container Managed Transaction (CMT). Je souhaite gérer le scénario lorsque, entre mes entités -read et entité-mise à jour quelqu'un d'autre met à jour la même entité (c'est-à-dire la ligne) dans la base de données. Dans ce cas, je veux jeter exception ..Question de base sur le verrouillage optimiste (Hibernate)
J'ai annoté mon entité avec @Version - comme
@Version
private Long version;
Maintenant, je suis confus si cela est suffisant pour la gestion de version ou je dois appeler explicitement le EntityManager.lock() api comme
{
.
.
final QueryDTO queryDTO = entityManager.find(QueryDTO.class, id);
entityManager.lock(queryDTO, LockModeType.READ);
queryDTO.setStatus(updatedStatus);
entityManager.persist(queryDTO);
}
Merci à l'avance,