Назад к вопросам
СБЕР
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 помогает обеспечить целостность данных без использования блокировок на уровне базы, что повышает производительность и масштабируемость приложений.