Hibernate / JPA middle
Что такое Оптимистичная блокировка?
Ответ
@Version (int/long/Timestamp). UPDATE ... WHERE version = ?. Если не совпала — OptimisticLockException. Подходит для low-contention (веб-приложения). Пессимистичная: @Lock(PESSIMISTIC_WRITE) → SELECT FOR UPDATE — блокирует строку.
Разбор: Оптимистичная блокировка не блокирует строку: поле @Version (int/long/Timestamp) проверяется в UPDATE ... WHERE version = ?, и при несовпадении бросается OptimisticLockException — это эффективно при низкой конкуренции. Ловушка — смешение с пессимистичной блокировкой: SELECT FOR UPDATE и @Lock(PESSIMISTIC_WRITE) физически блокируют строку в БД, тогда как оптимистичная работает без блокировок и обнаруживает конфликт лишь в момент записи.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.