Перезагрузка объекта из базы данных перед обновлением потенциально очень опасна. Вы можете пропустить любые возможные нарушения параллелизма.
Например, если происходит этот поток:
- Отображение экрана редактирования для клиента 1 на компьютере 1
- Отображение экрана редактирования для клиента 1 на компьютере 2
- Обработка обновления для клиента 1 с компьютера 1
- Обработка обновления для клиента 1 с компьютера 2
Возможно, что (4) завершится ошибкой из-за нарушения параллелизма, то есть обновление перезаписывает изменения, о которых компьютер 2 не знал. Но, перезагружая базу данных, вы игнорируете эти проблемы и внедряете последние обновления.
Так что для такой ситуации я чувствую, что поместить исходную сущность в сеанс (или в скрытое поле в форме) абсолютно правильно, если вы вообще заботитесь о параллелизме.
Не говоря уже о том, что многим людям не нравится снова нажимать на базу данных для дополнительного чтения ...