Junior — Middle
Pouvez-vous donner un exemple de situation en Java où un verrouillage pessimiste est utilisé pour éviter les conflits lors de l'accès aux données?
sobes.tech IA
Réponse de l'IA
Le verrou pessimiste en Java est souvent utilisé lorsque vous devez garantir que les données ne seront pas modifiées par d'autres threads pendant l'exécution d'une opération critique. Par exemple, lors de l'utilisation d'une base de données via JPA/Hibernate, vous pouvez utiliser la méthode lock() avec le type de verrouillage PESSIMISTIC_WRITE pour empêcher la modification simultanée de la même entrée:
EntityManager em = ...;
EntityTransaction tx = em.getTransaction();
tx.begin();
// Obtenir l'objet avec verrouillage en écriture
MyEntity entity = em.find(MyEntity.class, id, LockModeType.PESSIMISTIC_WRITE);
// Effectuer des modifications
entity.setValue(newValue);
// Enregistrer les modifications
em.persist(entity);
tx.commit();
Dans cet exemple, tant que la transaction n'est pas terminée, d'autres transactions tentant d'obtenir un verrou sur la même entrée attendront, ce qui évite les conflits et garantit l'intégrité des données.