Sobes.tech
Senior

Mis on rida versioon (row version) SQL-is? Kuidas seda Hibernate'is kasutatakse?

sobes.tech AI

Vastus AI-lt

Версия строки (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;

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

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