Лучший способ обновить некоторые поля отсоединенного объекта в Hibernate?

Мне было интересно, как лучше обновить некоторые поля детализированного объекта, используя HB на Java. Особенно, когда объект имеет атрибуты дочерних объектов. Например (аннотации удалены, а количество полей уменьшено для уменьшения шума):

public class Parent {
   int id;
   String field2;
   ...
   Child child;
}

public class Child {
   int id;
   String field3;
} 

При обновлении Parent в веб-приложении MVC я мог вызвать родительский экземпляр, используяSession.get (Parent.class, 123), используйте его, чтобы заполнить форму и отобразить ее. Нет DTO, только отсоединенный родительский элемент передается в представление и связывается с формой. Теперь я хочу только разрешить пользователю обновлятьfield2 атрибут родителя. Поэтому, когда пользователь отправляет форму, я получаю экземпляр Parent с заполненными id и field2 (я думаю, что здесь не имеет значения инфраструктура mvc, все ведет себя в основном одинаково при связывании).
Теперь, какую стратегию лучше всего выполнять обновление сущности? Я могу подумать о нескольких альтернативах, но я хочу услышать экспертов :) (Помните, что я не хочу терять отношения между родительским и дочерним экземплярами)

A) Снова извлеките родительский экземпляр из сеанса и вручную замените обновленные поля.

Parent pojoParent; //binded with the data of the Form.
Parent entity = Session.get(Parent.class,pojoParent.getId());
entity.setField2(pojoParent.getField2()).          

Я использую это много. Но pojoParent, похоже, используется как секретный DTO. Также становится ужасно, если количество полей для обновления становится больше.

B) Храните Дитя где-нибудь (httpSession?) И связывайте его последним.

Parent parent = Session.get(Parent.class,123);
//bind the retrieved parent to the form
// store the Child from parent.getChild() on the httpSession
...
//when the users submits the form...
pojoParent.setChild(someHttpSessionContext.getAttribute('Child'))
Session.save(pojoParent);

Я думаю, что это дерьмо, но я видел это в некоторых проектах ...

C) Установите отношение между Родителем и Ребенком как неизменное. С помощьюобновляемая = ложь в отношениях я могу обновить любое родительское поле, не беспокоясь о потере ребенка. Во всяком случае, это довольно ограничительно, и отношения никогда не будут обновлены.

Итак, что вы думаете, это лучший способ решить эту ситуацию?

Заранее спасибо!

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

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