Hoe implementeer je een mechanisme voor optimistisch vergrendelen in Hibernate om conflicten bij gelijktijdige toegang tot gegevens te voorkomen?
sobes.tech AI
Antwoord van AI
Optimistisch vergrendelen in Hibernate wordt geïmplementeerd met behulp van de annotatie @Version. Deze annotatie voegt een speciaal veld (bijvoorbeeld version) toe aan de entiteit, dat automatisch wordt verhoogd bij elke update van het record. Bij het opslaan controleert Hibernate of de versie in de database overeenkomt met de versie van het object dat wordt bijgewerkt. Als de versies niet overeenkomen, betekent dit dat de gegevens door een andere transactie zijn gewijzigd, en wordt een OptimisticLockException gegenereerd.
Voorbeeld:
@Entity
public class Product {
@Id
private Long id;
@Version
private int version;
private String name;
private int quantity;
// getters en setters
}
Op deze manier detecteert Hibernate conflicten bij gelijktijdige toegang tot hetzelfde record, en voorkomt het dat gegevens worden overschreven zonder rekening te houden met de wijzigingen van de andere gebruiker.