У меня есть объект GeneralKnowledgeTest, и он содержит много полей статистики (оценок, рейтингов, откликов, рейтингов ...), которые обновляются каждый раз, когда пользователь проходит этот тест (takeTest () -> метод транзакций).
Может случиться, что многие пользователи будут проходить один и тот же тест в одно и то же время, поэтому я подумывал о реализации оптимистической блокировки (@version) и перехватчика, который повторяет метод takeTest в случае, если исключение оптимистической блокировки
Итак, внутри метода takeTest я всегда получаю свежий экземпляр GeneralKnowledgeTest, например, entityManager.find (testId) , затем обновляю его поля статистики.В случае, если выдается оптимистическое исключение, перехватчик просто повторяет метод takeTest до его успешного завершения.
Что вы думаете об этой процедуре.Это хороший способ реализовать оптимистическую блокировку для систем, в которых может быть много пользователей, пытающихся пройти один и тот же тест?
PS.Компания не допустит отображения каких-либо предупреждающих сообщений в случае возникновения исключения оптимистической блокировки, поэтому перехватчик является обязательным для обеспечения плавного выполнения ...