Что такое Оптимистичная блокировка?

Ответ

@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.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться