IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

Entity à relation bidirectionnelle=DTO à référence cyclique?


Sujet :

JPA Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 17
    Par défaut Entity à relation bidirectionnelle=DTO à référence cyclique?
    Bonjour,

    Je tente de transformer mes entities en DTOs de manière à envoyer leurs informations sous la forme espérée par les clients.
    Pour ce faire je m'aide de dozer qui semble prendre en charge les références cycliques imposées par les relations bidirectionnelles de mes entities.
    Seulement voilà, lorsque vient la phase de sérialisation sur weblogic 10 (et donc d'envoi des DTOs aux clients par WebService) j'ai le droit à une jolie StackOverflowException...
    Je vois bien où est le problème: A contient B qui contient A qui contient B etc.

    L'unique solution que j'ai trouvé a été de :
    1. marquer, au sein de B, A comme étant transient
    2. ajouter, au sein de B, un attribut foreign key pour rappeler la relation qui existe entre B et A

    Le nouveau problème qui se pose c'est que lorsque je souhaiterai utiliser ma classe B plus tard (dans un tout autre context) je ne pourrais plus envoyer B enrichie de A puisque A est transient... Je n'aurais d'autre choix que de créer spécifiquement une nouvelle DTO...

    J'aurais aimé savoir finalement comment font les utilisateurs d'hibernate pour expédier des objets ayant des relations bidirectionnelles par l'intermédiaire de WebService par exemple.

    Merci pour votre aide et conseils !

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    la génération des DTO est un problème qui peut devenir assez complexe dans les grosses applications…

    profondeur et largeur de sérialisation dépendent du contexte (du use case, de l'UI, …),

    comme vous utilisez JPA vous pouvez vous baser sur la présence des annotations et utiliser la Reflection pour appliquer quelques règles simples…
    comme sérialiser dans le sens @OneToMany mais ne pas sérialiser les @ManyToOne mais seulement leur id…

    les OneToOne bidirectionnels restant ambigüs évidemment…



    et …

    nous avons fini par faire nos propres annotations qui contrôlent la génération des DTO…

Discussions similaires

  1. [2.x] Formulaire (Entity Multiple) relation Bidirectionnelle
    Par jeyGey dans le forum Symfony
    Réponses: 0
    Dernier message: 28/02/2013, 14h40
  2. [Entity] Perte de la référence vers une entité quand collection vidée
    Par strat0 dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 10/05/2009, 20h11
  3. [EJB3 Entity] Suppression et relation bidirectionnelle
    Par KillThatGirl dans le forum Java EE
    Réponses: 1
    Dernier message: 31/01/2009, 18h08
  4. [Modèle Relationnel] Relations bidirectionnelles entre 3 tables
    Par Tchupacabra dans le forum Schéma
    Réponses: 2
    Dernier message: 06/11/2008, 14h31
  5. JPA - Relation bidirectionnel
    Par JoloKossovar dans le forum JPA
    Réponses: 3
    Dernier message: 26/05/2008, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo