Ответ
Аннотация @Version в JPA используется для оптимистичной блокировки (optimistic locking). Она помогает предотвратить конфликты при одновременном изменении одной и той же сущности разными транзакциями.
Принцип работы:
- Поле с
@Versionавтоматически увеличивается при каждом обновлении сущности - Если две транзакции пытаются изменить одну запись, но имеют разное значение версии, выбрасывается
OptimisticLockException
Пример:
@Entity
public class Product {
@Id
private Long id;
@Version
private Long version;
// другие поля
}
Преимущества:
- Не блокирует данные на уровне БД
- Простота реализации
- Подходит для высоконагруженных систем
Используется обычно с числовыми полями (Long, Integer) или с Timestamp.