Hibernate / JPA middle
Что такое Оптимистичная блокировка в JPA?
Ответ
Поле @Version (int/long/timestamp). При update Hibernate сравнивает версию — если не совпала, бросает OptimisticLockException.
Разбор: Оптимистичная блокировка не ставит реальных блокировок в БД при чтении: она допускает параллельную работу и проверяет конфликт только в момент UPDATE, сравнивая значение @Version. Если версия изменилась другой транзакцией, бросается OptimisticLockException. Варианты с SELECT ... FOR UPDATE и table-lock описывают пессимистичную блокировку, а last-write-wins — это как раз то, чего оптимистичная блокировка избегает.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.