Sobes.tech
Junior — Middle

Qual é o propósito da anotação @Version no JPA e como ela influencia a gestão do acesso concorrente aos dados?

sobes.tech IA

Resposta da IA

Аннотация @Version в JPA используется для реализации механизма оптимистической блокировки. Она помечает поле сущности, которое хранит версию записи (обычно целочисленное или временное значение). При обновлении записи JPA проверяет, что версия в базе совпадает с версией в объекте, чтобы убедиться, что данные не были изменены другим транзакционным потоком.

Если версии не совпадают, выбрасывается исключение OptimisticLockException, что предотвращает перезапись данных, изменённых параллельно. Это помогает управлять конкурентным доступом без использования блокировок на уровне базы.

Пример:

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

    @Version
    private Integer version;

    private String name;
    // геттеры и сеттеры
}

Здесь поле version автоматически обновляется при каждом изменении сущности, обеспечивая контроль версий.