Ich frage mich, wie kann ich eine tiefe Kopie eines persistenten Objekts mit all seiner Zuordnung erstellen. Lassen Sie mich sagen, ich habe das folgende Modell.Deep Klon von Hibernate-Entität
class Document {
String title;
String content;
Person owner;
Set<Citation> citations;
}
class Person {
String name;
Set<Document> documents;
}
class Citation {
String title;
Date date;
Set<Document> documents;
}
Ich habe ein Szenario, in dem ein Benutzer wünschen könnte eine Kopie eines bestimmten Dokument von einer Person zu packen und machen das Dokument sein/sie dann später er/sie seinen Inhalt und den Namen ändern kann. In diesem Fall kann ich mir eine Möglichkeit vorstellen, ein solches Szenario zu implementieren, das eine tiefe Kopie dieses Dokuments erstellt (mit seinen Assoziationen).
Oder vielleicht, wenn jemand weiß, eine andere Möglichkeit, so etwas zu tun, ohne große Kopie von Daten, weil ich weiß, dass es für die Leistung der App schlecht sein kann.
Ich dachte auch über möglicherweise eine Referenz des Originaldokuments wie ein Attribut originalDocument
erstellen, aber auf diese Weise werde ich nicht in der Lage zu wissen, welches Attribut (oder vielleicht Assoziation) wurde geändert.
Das Problem bei dieser sein könnte, kann es nicht Behandeln Sie die Lazy Load-Auflistungen und die Versionseigenschaften. Meiner Meinung nach wäre der bessere Weg, die Deep-Copy-Methoden in jeder Klasse selbst zu schreiben. –
kann nicht mit lazy-Feldern umgehen, da die faule Sammlung im neuen geklonten Objekt nicht initialisiert werden konnte. –
Sie können Jackson verwenden, um in json serialisieren in mermory behandelt es Hibernate Lazy Loading (Sie müssen es konfigurieren) –