Sobes.tech
Junior — Middle
111

Care este scopul adnotării @Version în JPA și cum influențează gestionarea accesului concurent la date?

Răspuns de la AI

sobes.tech AI

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

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

Пример:

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

    @Version
    private Integer version;

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

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