❓ Что такое optimistic и pessimistic locking?
🔹 Optimistic Locking использует версионный контроль. Каждый объект данных имеет поле версии (@Version в JPA), которое обновляется при изменении. При сохранении проверяется, что версия не изменилась. Если она изменилась (другая транзакция уже обновила объект), операция завершается с ошибкой. Это подход минимально блокирует ресурсы, но требует обработки конфликтов на уровне приложения.
🔹 Pessimistic Locking заключается в блокировке строк для предотвращения их изменения другими транзакциями. Существует три вида блокировок в JPA:
PESSIMISTIC_READ – другие транзакции могут читать, но не изменять данные.
PESSIMISTIC_WRITE – блокировка на запись, другие транзакции не могут читать и изменять данные.
PESSIMISTIC_FORCE_INCREMENT – аналогично WRITE, но увеличивает версию даже без изменений.
❗️ Когда использовать?
- Optimistic Locking подходит для систем с редкими конфликтами.
- Pessimistic Locking лучше использовать в сценариях с высокой конкуренцией или при необходимости строго гарантировать целостность данных.
Post #682
1.88K
- 👍 14
- 🔥 2
- ⚡ 1