Sobes.tech
Senior
22

Что такое версия строки (row version) в SQL? Как используется в Hibernate?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Версия строки (row version) в SQL — это специальное поле, которое используется для реализации оптимистической блокировки. Обычно это числовое поле или поле с типом timestamp/rowversion, которое обновляется при каждом изменении записи. Это позволяет обнаруживать конфликты при параллельном обновлении данных.

В Hibernate для поддержки оптимистической блокировки используется аннотация @Version. Hibernate автоматически увеличивает значение версии при каждом обновлении сущности. Если при сохранении версия в базе не совпадает с версией в памяти, Hibernate выбрасывает исключение OptimisticLockException, предотвращая потерю данных.

Пример использования в Hibernate:

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

    private String name;

    @Version
    private Integer version;

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

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