Всем привет. У меня вопрос про то как лучше реализовывать защиту от параллельной модификации объектов.
Например, в интерпрайз приложении есть сложный объект у которого в свою очередь атрибуты - это другие объекты и тд. У многих пользователей есть возможность модифицировать этот объект. Вопрос в том, как избежать одновременной модификации несколькими пользователями?
Я понимаю что нет ничего “одновременного” и что на уровне БД уже есть защита от параллельной модификации и все изменения станут в очередь.
Но если нам нужно на это все накрутить еще какую-то бизнес логику и например делать проверку чего угодно (прав, доступного количества и тд), то эта транзакция (модификации) может занимать значительное время.
Есть ли у спринга готовые решения данной проблемы? Или как вообще к ней подойти? Посоветуйте пжл что почитать по теме
Давайте на примере. Пусть будет таблица T с ключем K и неким атрибутом A. Открыли форму на редактирование. Сохранили в Aold значение атрибута A, отредактировали A, получили Anew.
Как определить при сохранении конфликт с другими пользователями?
update T set A = Anew where K = Key and A = Aold
Этот запрос обновит 1 запись, если не было конфликта, и 0, если кто-то уже изменил значение атрибута A, и надо предложить пользователю получить актуальные данные.
Как-то так