Назад к вопросам
Северсталь-Ифоком
Junior — Middle
72
Использовали ли вы механизм Optimistic Locking при разработке с Spring, и как он реализуется?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Оптимистичная блокировка (Optimistic Locking) в Spring обычно реализуется с помощью аннотации @Version в JPA-сущностях. Она позволяет избежать конфликтов при одновременном обновлении данных несколькими транзакциями без явного блокирования записей в базе.
Принцип работы: при каждом обновлении записи версия увеличивается. Если при сохранении версия в базе не совпадает с версией объекта, значит, данные были изменены другим процессом, и выбрасывается исключение OptimisticLockException.
Пример:
@Entity
public class Product {
@Id
private Long id;
private String name;
@Version
private Integer version;
// геттеры и сеттеры
}
При использовании репозитория Spring Data JPA, если две транзакции одновременно пытаются обновить один и тот же объект, одна из них получит исключение, что позволит корректно обработать конфликт.