Spring MVC + Hibernate: частичное обновление модели из браузера

При отображении только части бина модели Spring MVC, есть ли способ обновить только то, что возвращается из браузера?

Позволять'скажем, у нас есть класс User (общедоступные свойства, конечно, только в этом примере):

public class User {
  public String firstName;
  public String lastName;
  public String email;
  public Date subscriptionExpiration;
}

Теперь я отображаю первые три свойства как поля ввода в JSP и хочу соответствующим образом обновить объект в базе данных. Только эти 3 параметра должны быть обновлены, а НЕ четвертый. Один из способов сделать это будет

@RequestMapping("/user/{userId}", method=RequestMethod.POST)
public String saveChanges(@PathVariable userId, User user, Model model) {
  User oldUser = User.loadFromDB(userId);
  oldUser.firstName = user.firstName;
  oldUser.lastName = user.lastName;
  oldUser.email = user.email;
  oldUser.saveToDB();

  model.addAttribute("user", oldUser);
}

но это будет означать жесткое кодирование всех свойств, которые могут измениться, что я нене очень нравится

Есть ли способ определить, какие поля обновлять, основываясь на том, что пользователю было разрешено изменять? Этот механизм должен быть умнее, чем просто предполагать, что все, чтоs в параметрах запроса могут быть изменены, в противном случае любой опытный пользователь может вручную добавить дополнительные поля в запрос.

Использование @Entity (dynamicUpdate = true) также не решает проблему, так как яЯ не получаю весь объект User обратно в запросе, и это откроет много дыр в безопасности.

Я упускаю хорошую функцию в Spring или есть какой-то другой способ концептуального решения этой проблемы? Любые советы приветствуются!

Ответы на вопрос(6)

Ваш ответ на вопрос