2016-05-27 3 views
1

Я хочу, чтобы предотвратить следующий сценарий:Можно ли использовать управление версиями JPA/оптимистичную блокировку для предотвращения отправки старых данных для изменения?

  • пользователя 1 приносит веб-страницу, которая позволяет ему изменить некоторые данные
  • пользователя 2 приносит веб-страницу, которая позволяет ему изменять одни и те же данные
  • пользователя 2 модифицирует и сохраняет данные
  • пользователя 1 попытки изменить и сохранить данные (необходимо, чтобы предотвратить это)

в настоящее время мы используем JPA оптимистическую блокировку, которая дает нашим ENTI ty - номер версии. Было бы плохой практикой использовать этот атрибут версии в нашей бизнес-логике, чтобы предотвратить его изменение?

Вопрос с бонусом: если его использовать для использования атрибута версии, было бы плохой практикой просто позволить исключение OptimisticLockException, чтобы модификация не удалась? Или это просто лениво?

ответ

1

Это, по сути, оптимистическая блокировка. Версии дают некоторые очевидные дополнительные преимущества.

Если вы можете положиться на OptimisticLockException, это зависит от вашего приложения. Если вы выполняете много операций до того, как сбережение, возможно, не удастся, возможно, имеет смысл проверить заранее, т. Е. Быстродействовать (хотя в конце все еще может не работать).

В более простых случаях нет причин, по которым вы не можете просто ждать, чтобы увидеть, не было ли исключение, так как вам все равно придется обращаться с ним.

Смежные вопросы