Melhor maneira de atualizar alguns campos de um objeto desanexado no Hibernate?

Eu queria saber qual é a melhor maneira de atualizar alguns campos de um objeto desanexado usando HB no Java. Especialmente quando o objeto possui atributos de objetos filhos. Por exemplo (anotações removidas e número de campos reduzido para reduzir o ruído):

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

public class Child {
   int id;
   String field3;
} 

Ao atualizar um pai em um aplicativo da Web MVC, eu poderia chamar uma instância pai usandoSession.get (Parent.class, 123), use-o para preencher um formulário e exibi-lo. Sem DTOs, apenas o pai desanexado é passado para a exibição e vinculado a um formulário. Agora, quero apenas permitir que o usuário atualize ofield2 atributo do pai. Portanto, quando o usuário publica o formulário, recebo uma instância Parent com o ID e o field2 preenchidos (acho que a estrutura mvc não importa aqui, todos se comportam da mesma forma quando vinculam).
Agora, qual estratégia é a melhor para executar a atualização da entidade? Posso pensar em poucas alternativas, mas quero ouvir os especialistas :) (lembre-se de que não quero perder o relacionamento entre as instâncias pai e filho)

A) Recupere a instância pai da sessão novamente e substitua manualmente os campos atualizados

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

Estou usando muito isso. Mas o pojoParent parece ser usado como um DTO secreto. Também fica horrível se o número de campos a serem atualizados aumentar.

B) Armazene a Criança em algum lugar (httpSession?) E associe-a posteriormente.

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);

Eu acho que isso é uma porcaria, mas eu vi isso em alguns projetos ...

C) Defina a relação entre pai e filho como imutável. Usandoatualizável = false no relacionamento, eu posso atualizar qualquer campo pai sem me preocupar em perder o filho. De qualquer forma, isso é bastante restritivo e o relacionamento nunca será atualizado.

Então, qual você acha que é a melhor maneira de resolver essa situação?

Agradeço antecipadamente!

questionAnswers(3)

yourAnswerToTheQuestion