Sobes.tech
Назад к вопросам
Junior — Middle
68

Можете объяснить назначение аннотации @Version в контексте управления конкурентным доступом?

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

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

sobes.tech AI

Аннотация @Version используется в JPA (Java Persistence API) для реализации оптимистичной блокировки при работе с базой данных.

Её основное назначение — предотвратить потерю данных при конкурентном доступе к одной и той же записи. При обновлении сущности JPA проверяет значение поля с аннотацией @Version. Если версия в базе не совпадает с версией в объекте, значит, кто-то другой изменил запись, и операция обновления прервётся с исключением OptimisticLockException.

Пример:

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

    @Version
    private Integer version;

    private String name;
    private Double price;

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

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