J'utilise Hibernate 4.1 et Spring 3.1. Considérons la classe User suivante ayant des références à un autre objet, y compris self. Tous les mappings d'hibernation que j'ai définis sont LAZY donc je chargerai les objets de référence seulement quand je les utiliserai dans le jsp ou le code else où.Modèle de domaine vers JSON - problème de sérialisation profonde
class User {
private User createdBy;
private Department department;
private Project project;
.....
.....
}
Le problème est quand je veux retourner une représentation JSON où il utilise la réflexion pour le faire et il en fait une sérialisation profonde. Voici mon code de contrôleur.
@ResponseBody
public User getUser(int id) {
User user = [fetch user from service];
return user;
}
Puisque j'ai auto-référence aussi, il va en boucle infinie.
Quelle est la solution pour résoudre ce problème? Je sais que j'ai besoin d'utiliser un pattern DTO où je renvoie un UserDTO à la place, mais combien de méthodes je crée. Par exemple, à un endroit j'ai juste besoin des attributs d'utilisateur de base, à l'autre endroit où j'ai besoin d'utilisateur et de son département, à l'autre endroit j'ai besoin d'utilisateur avec le département et le projet.
Combien de méthodes aurais-je besoin d'exposer? Y a-t-il un autre moyen de résoudre ce problème?
Quelle bibliothèque JSON utilisez-vous? – nobeh
Vous pouvez créer des objets DTO à structure plate pour chaque cas avec les champs requis de Emp, Proj et Dep. – JMelnik
J'utilise org.codehaus.jackson –