4 Stimmen

JPA: Wie kann man ein losgelöstes Objekt effizient zusammenführen?

Technologien: Spring, Hibernate, JSR-303, JQuery
Plattform: Windows

Ich versuche, einen einfachen Aktualisierungsanwendungsfall zu implementieren. Siehe bitte DAO/Dienst/Controller Quellcode Link

Klasse2 enthält viele Eigenschaften, darunter auch Klasse1. Der Class2Controller nutzt Spring, um ein neues Class2-Objekt zu erstellen und HttpRequest-Objektparameter an Class2 zu binden. Anschließend ruft er Service auf, der wiederum DAO aufruft. Welches ist in DAO der effizienteste Weg, dieses neue Class2-Objekt in der Datenbank zu aktualisieren?

Option 1:

  • Derzeit in DAO, rufe ich Class2 Objekt aus der Datenbank.

    Class2 class2Persisted = em.find(Class2.class, class2Request.getId());

  • Aktualisieren des abgerufenen Objekts mit den Eigenschaften des Anforderungsobjekts und Übertragen

    tx.begin();
    class2Persisted.setClass1(class2Request.getClass1());
    em.merge(class2Request);
    tx.commit();
  • Oben habe ich nur eine Eigenschaft mit setClass1 aktualisiert. Aber es gibt viele Eigenschaften in Class2, die aktualisiert werden müssen. Gibt es eine andere effiziente Möglichkeit, class2Persisted mit class2Request auf Objektebene zusammenzuführen, anstatt auf jeder Eigenschaftsebene?

Option 2

  • Class2Controller soll das class2Persisted-Objekt abrufen und Spring auffordern, Parameter zu binden.

  • Mir wurde klar, dass Option 2 nicht in Frage kommt. Bitte beachten Sie ein anderes Problem lien auf die ich zuvor gestoßen bin. Hibernate versucht, verknüpfte Objekte zu laden und wirft EntityNotFoundException ohne meine benutzerdefinierte Einschränkung @IdMustExist eine Chance zur Validierung zu bekommen.

Wenn Sie andere Vorschläge haben, schlagen Sie sie bitte vor.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X