Hibernate / JPA middle
В чём разница: Pessimistic vs optimistic locking?
Ответ
Pessimistic: SELECT ... FOR UPDATE блокирует строку. Optimistic: версия (@Version) — при commit проверяется, изменилась ли она.
Разбор: Pessimistic locking берёт блокировку строки в БД заранее (SELECT ... FOR UPDATE), не давая другим менять её. Optimistic не блокирует, а добавляет @Version и при commit проверяет, не изменилась ли версия — если изменилась, бросает OptimisticLockException. Первый дистрактор меняет два подхода местами, второй подменяет механизм блокировки на synchronized и SERIALIZABLE, третий приписывает optimistic несуществующую блокировку на чтение.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.