Проблема в том, что он не масштабируется.Предположим, у меня много пользователей, которые могут вызвать блокировку одним и тем же действием.Пользователю нет дела до сообщения об ошибке блокировки.
Обработка исключений оптимистической блокировки
К сожалению, программисты часто слишком умны для собственной пользы.Первая проблема, которая возникает при использовании оптимистической блокировки, - что делать, когда возникает исключение OptimisticLockException.Типичный ответ дружелюбного соседского супер-программиста - автоматически обработать исключение.Они просто создадут новую транзакцию, обновят объект, чтобы сбросить его версию, и объединят данные обратно в объект и повторно передадут его.Проблема Presto решена, или это так?
Это на самом деле побеждает весь смысл блокировки в первую очередь.Если это то, что вы хотите, вы также можете использовать без блокировки.К сожалению, исключение OptimisticLockException редко обрабатывается автоматически, и вам действительно нужно беспокоить пользователя об этой проблеме.Вы должны сообщить о конфликте пользователю и сказать «извините, но конфликт редактирования произошел, и ему придется повторить свою работу», или, в лучшем случае, обновить объект и представить пользователю текущие данные иданные, которые они представили, и помогают им объединить два, если это необходимо.
Некоторые автоматизированные инструменты слияния будут сравнивать две конфликтующие версии данных, и если ни одно из отдельных полей не конфликтует, то данные будут просто автоматически объединеныбез помощи пользователя.Это то, что делают большинство систем контроля версий программного обеспечения.К сожалению, пользователь обычно лучше может решить, когда что-то конфликтует, чем программа, просто потому, что две версии .java-файла не изменили одну и ту же строку кода, не означает, что не было никакого конфликта, первый пользователь мог удалитьметод, к которому другой пользователь добавил метод для ссылки, и несколько других возможных проблем, которые приводят к тому, что обычно ночная сборка прерывается очень часто.