Номера версий в Hibernate — это механизм контроля конкурентности для реализации оптимистичной блокировки. Такой подход предотвращает конфликты данных, когда несколько транзакций одновременно обращаются к одним и тем же записям в базе данных.
Когда транзакция изменяет объект, Hibernate автоматически увеличивает номер версии. Это позволяет последующим транзакциям отследить, изменялись ли данные с момента их первоначального чтения.
Номер версии действует как контрольная точка валидации:
Такой подход имеет несколько плюсов:
Транзакция A читает запись с version = 5. Пока транзакция A обрабатывает данные, транзакция B обновляет ту же запись, увеличивая версию до 6. Когда транзакция A пытается применить свои изменения, несовпадение версий (5 ≠ 6) вызывает StaleObjectStateException, предотвращая сохранение некорректных данных.
Этот механизм обеспечивает целостность данных в многопользовательских окружениях без издержек производительности традиционных стратегий блокировки.
В оптимистичной блокировке Hibernate номер версии автоматически увеличивается Hibernate каждый раз, когда транзакция изменяет объект, что позволяет обнаруживать конкурентные модификации.
Новый — ещё не проверен сообществом
Вы