Что такое optimistic locking и в каких кейсах он лучше pessimistic locking?
Что такое optimistic locking?
Каким образом реализуется optimistic locking в JPA?
Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Рейтинг:
4
Сложность:
6
Optimistic locking предполагает, что конфликты редки: обновление проходит только если версия строки не изменилась. Pessimistic locking блокирует строку заранее. Оптимистичный лучше, когда число конфликтов низкое и блокировки вредны.
Рейтинг:
5
Сложность:
5
Optimistic locking — это подход, при котором блокировки не ставятся заранее. Предполагается, что конфликты возникают редко. При обновлении данных проверяется, не изменил ли их кто-то другой. Если данные изменились, операция завершается ошибкой. Такой подход хорошо масштабируется и снижает блокировки.
Рейтинг:
5
Сложность:
6
В JPA optimistic locking реализуется с помощью поля версии. Это поле помечается аннотацией @Version. При каждом обновлении сущности версия увеличивается. Если при сохранении версия в базе отличается от версии в объекте, JPA выбрасывает исключение. Таким образом предотвращается перезапись чужих изменений.