Оптимистичная блокировка в Spring Data JPA работает на основе поля версии для обнаружения конфликтов и обеспечения того, чтобы обновления не перезаписывали друг друга. www.geeksforgeeks.org
Процесс происходит в несколько шагов: www.codingshuttle.com
- Добавление столбца версии. www.codingshuttle.com В таблицу базы данных добавляется новый столбец «версия», в котором хранится номер версии каждой строки. www.codingshuttle.com
- Чтение номера версии. www.codingshuttle.com Когда пользователь хочет изменить строку, приложение сначала читает текущий номер версии этой строки. www.codingshuttle.com
- Обновление строки с новой версией. www.codingshuttle.com Когда пользователь обновляет строку, приложение увеличивает номер версии на 1 и записывает обновлённые данные обратно в базу данных. www.codingshuttle.com
- Проверка валидации. www.codingshuttle.com База данных проверяет, соответствует ли номер версии ожидаемому значению (то есть номер версии в базе данных должен превышать предыдущий номер версии на 1). www.codingshuttle.com
- Обнаружение конфликтов. www.geeksforgeeks.org Если проверка проваливается (это означает, что другая транзакция изменила данные за это время), транзакция прерывается. www.codingshuttle.com Затем пользователя просят повторить процесс с шага 2. www.codingshuttle.com
Оптимистичная блокировка предполагает, что конфликты редки, и позволяет параллельным транзакциям выполняться без блокировки данных. www.geeksforgeeks.org