Najlepszy sposób na aktualizację niektórych pól odłączonego obiektu na Hibernate?

Zastanawiałem się, jaki jest najlepszy sposób aktualizacji niektórych pól dettached obiektu za pomocą HB na Javie. Szczególnie, gdy obiekt ma atrybuty obiektów potomnych. Na przykład (usunięto adnotacje i zmniejszono liczbę pól w celu zmniejszenia szumów):

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

public class Child {
   int id;
   String field3;
} 

Podczas aktualizowania obiektu nadrzędnego w aplikacji internetowej MVC mogłem wywołać instancję nadrzędną przy użyciuSession.get (Parent.class, 123), użyj go, aby wypełnić formularz i wyświetlić go. Brak DTO, tylko dettached rodzic jest przekazywany do widoku i powiązany z formularzem. Teraz chcę tylko zezwolić użytkownikowi na aktualizacjępole2 atrybut rodzica. Więc kiedy użytkownik wysyła formularz otrzymuję instancję nadrzędną z wypełnionym identyfikatorem i polem2 (myślę, że ramy mvc nie mają tu znaczenia, wszystkie zachowują się tak samo podczas wiązania).
Jaka strategia jest najlepsza do przeprowadzenia aktualizacji jednostki? Mogę myśleć w kilku alternatywach, ale chcę usłyszeć ekspertów :) (Pamiętaj, że nie chcę tracić relacji między instancją rodzica a dzieckiem)

ZA) Ponownie pobierz instancję nadrzędną z sesji i zastąp ręcznie zaktualizowane pola

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

Używam tego bardzo często. Ale pojoParent wydaje się być używany jako tajny DTO. Również staje się okropne, jeśli liczba pól do aktualizacji staje się większa.

B) Zapisz dziecko gdzieś (httpSession?) I skojarz je później.

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

Myślę, że to gówno, ale widziałem to w niektórych projektach ...

DO) Ustaw relację między rodzicem a dzieckiem jako nieobojętną. Za pomocąupdatable = false w związku mogę zaktualizować każde pole rodzica bez obawy o utratę dziecka. W każdym razie jest to dość restrykcyjne i relacja nigdy nie będzie aktualizowana.

Jak myślisz, jaki jest najlepszy sposób na rozwiązanie tej sytuacji?

Z góry dziękuję!

questionAnswers(3)

yourAnswerToTheQuestion