Je me demande comment je peux créer une copie profonde d'un objet persistant avec toute son association. Disons que j'ai le modèle suivant.Clone profond de l'entité Hibernate
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;
}
J'ai un scénario dans lequel un utilisateur pourrait vouloir récupérer une copie d'un document particulier d'une personne et que le document son/le sien, puis plus tard, il/elle peut changer son contenu et son nom. Dans ce cas je peux penser à une façon d'implémenter ce genre de scénario qui est de créer une copie profonde de ce document (avec ses associations).
Ou peut-être si quelqu'un sait d'une autre façon possible de faire une telle chose sans faire une énorme copie de données, car je sais que ce peut être mauvais pour les performances de l'application. Je pensais aussi à créer une référence au document original comme ayant un attribut originalDocument
mais de cette façon je ne serai pas capable de savoir quel attribut (ou peut-être l'association) a été changé.
Le problème avec celui-ci pourrait être, il ne peut gérer les collections de chargement paresseux et les propriétés de la version. À mon humble avis le meilleur moyen serait d'écrire les méthodes de copie en profondeur dans chaque classe nous-mêmes. –
ne peut pas gérer les champs paresseux, l'échec de l'initialisation de la collecte paresseuse dans le nouvel objet cloné échoue. –
Vous pouvez utiliser Jackson pour sérialiser en json dans mermory il gère le chargement paresseux d'hibernate (vous devez le configurer) –