J'essaye d'implémenter un verrou hors ligne pessimiste en utilisant Spring et JPA/Hibernate. J'ai une table de verrouillage dans ma base de données qui stocke tous les verrous (ID de l'enregistrement qui est verrouillé, timestamp et utilisateur). L'interface de service LockManager ressemble à ceci:Pessimistic Offline Lock (Java, Spring)
public interface LockManager {
@Transactional(isolation=Isolation.SERIALIZABLE)
public Boolean TestAndGetLock(Application app, User user);
public void realeaseLock(Application app, User user);
}
La méthode TestAndGetLock premiers tests s'il y a un verrou sur le dossier. S'il y en a, il retourne vrai et se termine. S'il n'y en a pas, il renvoie false et crée le verrou (écrit un nouveau verrou dans la table de verrouillage). Ce n'est qu'alors que la webapp démarre réellement la transaction commerciale (dans ce cas, elle affiche un formulaire d'édition pour l'application transmise en tant que paramètre).
Pouvez-vous me dire si ce design est correct?
Les niveaux d'isolation personnalisés ne fonctionnent généralement pas avec les gestionnaires de transactions jpa/hibernate. – Bozho
pourquoi pas eux? ne sont-ils pas supportés? –