Junior — Middle
Kun je een voorbeeld geven van een situatie in Java waarin pessimistische locking wordt gebruikt om conflicten bij toegang tot gegevens te voorkomen?
sobes.tech AI
Antwoord van AI
Pessimistische vergrendeling in Java wordt vaak gebruikt wanneer moet worden gegarandeerd dat gegevens niet door andere threads worden gewijzigd tijdens het uitvoeren van een kritieke operatie. Bijvoorbeeld, bij het werken met een database via JPA/Hibernate, kan de methode lock() worden gebruikt met het vergrendelings-type PESSIMISTIC_WRITE om gelijktijdige wijzigingen van hetzelfde record te voorkomen:
EntityManager em = ...;
EntityTransaction tx = em.getTransaction();
tx.begin();
// Object met schrijfsvergrendeling ophalen
MyEntity entity = em.find(MyEntity.class, id, LockModeType.PESSIMISTIC_WRITE);
// Wijzigingen doorvoeren
entity.setValue(newValue);
// Wijzigingen opslaan
em.persist(entity);
tx.commit();
In dit voorbeeld wachten andere transacties die proberen een vergrendeling op hetzelfde record te krijgen totdat de transactie is voltooid, wat conflicten voorkomt en de gegevensintegriteit waarborgt.