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

Hibernate Java Discussion :

Hibernate et pattern DTO


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 17
    Par défaut Hibernate et pattern DTO
    Bonjour à tous,

    Je suis en train de me poser une question que vous vous êtes surement tous posée : faut-il oui ou non utiliser le pattern DTO pour copier les objets renvoyés par Hibernate?

    Le seul interêt que j'ai trouvé pour l'instant à DTO (ou VO) c'est la séparation des couches et donc la facilité de la transmission des objets retournés par Hibernate (entre les couches ou carrement sur un réseau).

    Ce que j'aimerai savoir c'est est-ce que le fait de faire une copie des objets - même détachés- hibernate lui allège son travail. C'est a dire qu'on n'essaye d'utiliser des objets que lui "surveille" ou manipule pour d'autres traitements, en clair est-ce qu'on y gagne en performance?

    Si vous avez des experiences, des avis sur la question...n'hesitez pas.

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Utiliser des DTO implique la création de classes supplémentaires qui vont allourdir le projet.
    Comme tu l'as dit, je n'utiliserais ce pattern qu'en cas de passages d'objets sur le réseau, comme par exemple par des ejb sessions, pour réduire la quantité d'info transportée.
    Pour une utilisation classique, je ne vois pas l'intérêt.
    Le lazy loading te permet de charger uniquement les données dont tu as besoin. Je ne pense donc pas que l'utilisation de DTO te permette de gagner en performance.

  3. #3
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Pour ma part, bien que je ne connaisse pas assez le pattern DTO, j'ai souvent lu dans des articles qu'Hibernate (ou autre concurrent de persistance) évitait justement l'utilisation d'objets DTO... faut-il après coup, considérer qu'il le remplace ou bien que son travail ne nécessite pas l'intervention d'un tel pattern ... je ne saurais préciser ma pensée à ce sujet

  4. #4
    Membre chevronné Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par défaut
    Sur le projet sur lequel je travaille actuellement, nous mappons directement les DTO avec la base de données et nous les utilisons dans toutes les couches (présentation, métier et dao).

    Cela diminue le nombre de classe et évite la recopie dans/de des beans de présentation et de bd.

  5. #5
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Citation Envoyé par gronono
    Sur le projet sur lequel je travaille actuellement, nous mappons directement les DTO avec la base de données et nous les utilisons dans toutes les couches (présentation, métier et dao).

    Cela diminue le nombre de classe et évite la recopie dans/de des beans de présentation et de bd.
    Hello,

    Est ce que cela n'induit pas un certain couplage entre les couches? Que ce passe t'il le jour l'on remplace une couche qui manipule d'autres types d'objets?

    A quel niveau sont déclaré tes objets DTO?

  6. #6
    Membre chevronné Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par défaut
    Evidement, cela introduit du couplage entre les couches.
    Mais, un objet Personne reste une personne que se soit dans la couche DAO, Service ou présentation.

    Donc mon objet Personne est le même pour toutes les couches donc cela ne sert à rien d'écrire trois fois (ou plus) la même classe.

    L'important est que chaque DTO soit un POJO et ne fasse aucun traitement. Il ne doit pas par exemple modifier le nom de la personne pour le mettre en majuscule ou transforme le nom pour enlever les accents, ...

    Si on change l'implémentation d'une couche, l'objet Personne reste une personne. La façon dont on le traite ne change pas sa définition.

    A+

Discussions similaires

  1. utilité du design pattern DTO
    Par felix01 dans le forum Frameworks Web
    Réponses: 4
    Dernier message: 10/04/2014, 17h18
  2. A propos du pattern DTO
    Par kodo dans le forum Design Patterns
    Réponses: 1
    Dernier message: 15/12/2009, 13h18
  3. Architecture Hibernate DTO
    Par nono44200 dans le forum Hibernate
    Réponses: 3
    Dernier message: 03/08/2007, 14h45
  4. [HIBERNATE] pattern Open Session in View
    Par _beber85 dans le forum Hibernate
    Réponses: 1
    Dernier message: 10/05/2006, 10h04
  5. [Plugin][Hibernate] Patterns DAO avec hybernate
    Par BarbapapaDK dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 13/03/2006, 09h53

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