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

Persistance des données Java Discussion :

Cas tordu conversion POJO en DTO


Sujet :

Persistance des données Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 52
    Points : 35
    Points
    35
    Par défaut Cas tordu conversion POJO en DTO
    Bonjour,

    Je fais face a un cas plutot tordu pour convertir mes POJO JPA en DTO.

    Mon modele est le suivant: un Project contient 0..n ProjectDetail.
    Mes POJO annoté sont convertit en DTO pour être affiché plus tard.

    Voici le code de chacun (avec juste les parties interessantes):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    public class Project implements Serializable {
     
        private static final long serialVersionUID = 3278578205097992228L;
     
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "ID")
        private Integer id;
     
        @OneToMany(mappedBy="project")
        private List<ProjectDetails> projectDetails;
     
        /**
         * Convertit un objet modele JPA en objet Service DTO.
         * @return un objet DTO
         */
        public ProjectDTO modelToDTO() {
            List<ProjectDetailsDTO> projectDetailsDTO = new ArrayList(projectDetails.size());
            for (ProjectDetails projectDetailsTmp : projectDetails) {
                projectDetailsDTO.add(projectDetailsTmp.modelToDTO());
            }
            ProjectDTO dto = new ProjectDTO(this.id, this.client, this.featured, projectDetailsDTO);
            return dto;
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    public class ProjectDetails implements Serializable {
     
        private static final long serialVersionUID = 7272919421369573151L;
     
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "ID")
        private Integer id;
     
        @ManyToOne
        @JoinColumn(name = "PROJECT_ID", nullable=false)
        private Project project;
     
        /**
         * Convertit un objet modele JPA en objet Service DTO.
         * @return un objet DTO
         */
        public ProjectDetailsDTO modelToDTO() {
            ProjectDetailsDTO dto = new ProjectDetailsDTO(id, project.modelToDTO(), locale, title, description, image, url, testimony);
            return dto;
        }
    Le probleme est que pour transformer un Project en ProjectDetails je dois transformer la liste de ProjectDetails de Project en liste de ProjectDetailsDTO.
    Donc pour chaque element de la liste j'appelle la méthode modelToDTO de ProjectDetails. Mais pour créer un nouvel objet ProjectDTO dans le ProjectDetailsDTO je fais un appel a project.modelToDTO d'ou la boucle infinie...

    Je ne sais pas si je suis clair mais je pense que le probleme est au niveau conception/modélisation. Avez vous des idées ou une solution ?

    Merci

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par Loizo Voir le message
    Bonjour,

    Je fais face a un cas plutot tordu pour convertir mes POJO JPA en DTO.

    Mon modele est le suivant: un Project contient 0..n ProjectDetail.
    Mes POJO annoté sont convertit en DTO pour être affiché plus tard.

    Voici le code de chacun (avec juste les parties interessantes):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    public class Project implements Serializable {
     
        private static final long serialVersionUID = 3278578205097992228L;
     
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "ID")
        private Integer id;
     
        @OneToMany(mappedBy="project")
        private List<ProjectDetails> projectDetails;
     
        /**
         * Convertit un objet modele JPA en objet Service DTO.
         * @return un objet DTO
         */
        public ProjectDTO modelToDTO() {
            List<ProjectDetailsDTO> projectDetailsDTO = new ArrayList(projectDetails.size());
            for (ProjectDetails projectDetailsTmp : projectDetails) {
                projectDetailsDTO.add(projectDetailsTmp.modelToDTO());
            }
            ProjectDTO dto = new ProjectDTO(this.id, this.client, this.featured, projectDetailsDTO);
            return dto;
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    public class ProjectDetails implements Serializable {
     
        private static final long serialVersionUID = 7272919421369573151L;
     
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "ID")
        private Integer id;
     
        @ManyToOne
        @JoinColumn(name = "PROJECT_ID", nullable=false)
        private Project project;
     
        /**
         * Convertit un objet modele JPA en objet Service DTO.
         * @return un objet DTO
         */
        public ProjectDetailsDTO modelToDTO() {
            ProjectDetailsDTO dto = new ProjectDetailsDTO(id, project.modelToDTO(), locale, title, description, image, url, testimony);
            return dto;
        }
    Le probleme est que pour transformer un Project en ProjectDetails je dois transformer la liste de ProjectDetails de Project en liste de ProjectDetailsDTO.
    Donc pour chaque element de la liste j'appelle la méthode modelToDTO de ProjectDetails. Mais pour créer un nouvel objet ProjectDTO dans le ProjectDetailsDTO je fais un appel a project.modelToDTO d'ou la boucle infinie...

    Je ne sais pas si je suis clair mais je pense que le probleme est au niveau conception/modélisation. Avez vous des idées ou une solution ?

    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        public ProjectDetailsDTO modelToDTO(ProjectDTO inProjectDTO) {
            ProjectDetailsDTO dto = new ProjectDetailsDTO(id, inProjectDTO, locale, title, description, image, url, testimony);
            return dto;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public ProjectDTO modelToDTO() {
            ProjectDTO dto = new ProjectDTO(this.id, this.client, this.featured, projectDetailsDTO);
     
            List<ProjectDetailsDTO> projectDetailsDTO = new ArrayList(projectDetails.size());
            for (ProjectDetails projectDetailsTmp : projectDetails) {
                projectDetailsDTO.add(projectDetailsTmp.modelToDTO(dto));
            }
     
            return dto;
        }

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 52
    Points : 35
    Points
    35
    Par défaut
    Ca me semble bien ! Je vais tester ca !
    Le probleme est que dans modelToDTO() de Project, quand tu crée le ProjectDTO le ProjectDetailsDTO que tu lui passe n'est pas correctement initialisé. Ca ne posera surement pas de probleme pour la suite mais bon...
    Je me demande si ma modelisation est bonne ?
    Merci en tout cas !

Discussions similaires

  1. lisez bien la question avant de répondre cas tordu :)
    Par frp31 dans le forum Administration système
    Réponses: 3
    Dernier message: 15/12/2011, 11h13
  2. Réponses: 7
    Dernier message: 02/02/2011, 11h21
  3. Conversion binaire en decimal cas de plusieurs bit
    Par crazyvirus dans le forum C++
    Réponses: 2
    Dernier message: 09/11/2009, 09h54
  4. Conversion POJO de Java vers AS3
    Par PtitS dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 11/03/2009, 10h36
  5. [XSL] cas un peu tordu...
    Par ziller dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/12/2005, 10h30

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