Sobes.tech
Junior — Middle

Hibernate'da verilerin eşzamanlı erişiminde çatışmaları önlemek için optimistik kilitleme mekanizması nasıl uygulanır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Оптимистичное блокирование в Hibernate реализуется с помощью аннотации @Version. Эта аннотация добавляет в сущность специальное поле (например, version), которое автоматически увеличивается при каждом обновлении записи. При сохранении Hibernate проверяет, что версия в базе совпадает с версией объекта, который обновляется. Если версии не совпадают, значит, данные были изменены другим транзакцией, и выбрасывается исключение OptimisticLockException.

Пример:

@Entity
public class Product {
    @Id
    private Long id;

    @Version
    private int version;

    private String name;
    private int quantity;

    // геттеры и сеттеры
}

Таким образом, при одновременном доступе к одной записи, если один пользователь обновил данные, а другой пытается сохранить устаревшую версию, Hibernate обнаружит конфликт и предотвратит перезапись данных без учета изменений другого пользователя.