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

Frameworks Web Java Discussion :

utilité du design pattern DTO


Sujet :

Frameworks Web Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 90
    Points : 55
    Points
    55
    Par défaut utilité du design pattern DTO
    Bonjour,
    je veux bien savoir l'utilité du design pattern DTO qui permet de donner une nouvelle représentation épuré de l'objet,si il y a des ORM comme hibernate qui permettent d'implémenter ce qu'on appelle le LAZY LOADING qui à son tour fait la même chose presque
    Merci de votre interaction

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 526
    Points
    9 526
    Billets dans le blog
    1
    Par défaut
    Les DTO sont souvent qualifiés d'inutiles dans un contexte JPA/ORM mais c'est un point de vue restrictif et qui ne tient pas compte des contraintes de certains environnements/architectures.

    Les DTO n'ont pas grand chose à voir avec le lazy loading, même si en général, ils évitent cette exception.
    L'avantage majeur que j'y vois est l'isolation de l'application de la structure physique d'une base de données. On peut donc faire varier la DB sans avoir à toucher l'application utilisatrice.
    Un autre avantage est que les DTO représentent uniquement les données utilisées par l'IHM.
    Enfin, avec certaines bases de données à l'ancienne, on va également pouvoir donner un nom significatif à une colonne... ce n'est pas rien !
    "DTVA" ne veut pas dire grand chose... "DateDeValidation" est un peu plus explicite
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    merci de votre réponse ubutterline
    je vais vous mettre dans la situation:
    supposons que nous avons deux classes qui ont une association bidirectionnelle entre eux par exemple une catégorie a plusieurs produit j'utilise DTO pour éviter le problème quand je sélectionne une catégorie cet objet instance de catégorie contiendra une collection d'objet produit et vice versa,mais je me retrouve avec le fait que le lazy loading fait la même chose il récupère l'objet catégorie et des proxy vers les objets produits qui lui appartiennent ,donc je me suis dit c'est quoi l'utilité du design pattern DTO

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 526
    Points
    9 526
    Billets dans le blog
    1
    Par défaut
    Tu parles d'une relation <many-to-many> ?

    Dans tous les cas, l'intérêt des DTO n'est pas dans le lazy-loading et je ne dis pas non plus qu'on DOIT absolument passer par des DTO.
    On peut très bien développer sans, en particulier si la base de données est figée...
    C'est d'autant plus vrai si les DTO sont des classes identiques aux entity...
    Dans le temps, surtout si la base de données sert à plusieurs applications, l'intérêt des DTO est plus grand.

    Pour ton cas particulier, j'aurais :
    - un DTO lié à la vue par Catégorie contenant une liste de DTO avec les informations produit affichées par cette vue
    - un DTO lié à la vue Produit contenant une liste de DTO avec les informations Catégorie affichées par cette vue

    Rien n'empêche d'utiliser les mêmes objets de base en les étendant.
    On pourrait imaginer avoir un objet DTOCategorie avec code, libellé (et tout ce qui est affiché) et une extension de cet objet ajoutant la liste de DTOProduit. On aurait donc :
    - un DTOCategorie
    - un DTOVueCategorie extends DTOCategorie avec une List<DTOProduit>
    - un DTOProduit
    - un DTOVueProduit extends DTOProduit avec une list<DTOCategorie>

    Tu vois mieux ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 90
    Points : 55
    Points
    55
    Par défaut
    j'ai plutôt une association ManytoOne:categorieDTO contient une liste d'Id produit quand je veux construire un categorieDTO à partie d'un objet Categorie j'utilise une méthode similaire à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public CategorieDTO createDTO(Categorie cat){
    CategorieDTO dto=new CategorieDTO();
    ...
    ArrayList<Long> idProduits =new ArrayList<Long>();
    for(Produit p:p.getProduits){
    idProduits.add(p.getId());
    }
    dto.setProduits(idProduits);
    ....
    }
    mais j'obtient une exception :LazyInitialisationException:failed to initialize a collection of role no session or session was closed

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. [VS.NET] Les design pattern et DOTNET
    Par Nycos62 dans le forum Visual Studio
    Réponses: 4
    Dernier message: 22/10/2004, 14h44
  3. [Observateur] Précisions sur le design pattern Observer [UML]
    Par joquetino dans le forum Design Patterns
    Réponses: 2
    Dernier message: 07/10/2004, 22h35
  4. Les Designs Patterns Entreprise
    Par boulon dans le forum Design Patterns
    Réponses: 4
    Dernier message: 01/09/2004, 19h16
  5. [Design Patterns] Architecture 3 tiers
    Par HPJ dans le forum Design Patterns
    Réponses: 1
    Dernier message: 29/07/2003, 11h49

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