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 :

Différence DAO et DTO


Sujet :

Persistance des données Java

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 176
    Points : 99
    Points
    99
    Par défaut Différence DAO et DTO
    Bonjour, je suis sur un projet java, et je dois faire des requêtes CRUD sur une base de données, mes requêtes séparées fonctionnent. Je compte le faire via une facade et utiliser un facroty pour mon CRUD.
    Ce que j'ai du mal à comprendre, c'est la différence entre DAO et DTO...

    Si quelqu'un d'aguérri pouvait m'expliquer.

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    DTO qui veut dire "Data Transfer Object" sont des objets qui vont contenir les données en tant que tel (exemple le DTO Client qui va contenir des propriété genre Nom, Prenom, Adresse, etc). Ils ne contiennent généralement pas de "logique métier"

    DAO qui veut dire "Data Access Object" est ce qui va contenir les méthodes permettant de récupérer, insérer, mettre a jour, effacer tes DTOs dans le système de stockage (BD, Fichiers, etc.)
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    On commence par le plus simple, le DTO (Data Transfer Object) :
    C'est un objet qui défini la structure des informations à échanger, généralement, Serializable.
    En gros, c'est l'objet qui circule entre les différentes couches de ton application.

    Le DAO (Data Access Object) :
    C'est l'objet qui contient les méthodes d'accès aux données de la base de données.
    On peut utiliser JDBC ou JPA ou Hibernate (ou autre ORM) pour le faire mais c'est bien cette classe qui s'en occupe.
    On y retrouve généralement les méthodes de base :
    - create(...) pour créer un enregistrement en DB
    - update(...) pour modifier un enregistrement existant en DB
    - delete(...) pour supprimer l'enregistrement en DB
    - findAll(...) pour récupérer la liste des enregistrements correspondant aux critères
    - get(...) (ou find(...)) pour récupérer l'enregistrement sur sa clé primaire

    Les paramètres de ces méthodes dépendent un peu de la technologie, avec JPA on serait tenté d'avoir un entity en paramètre mais on pourrait systématiquement utiliser le DTO :
    - create(dto)
    - upate(dto)
    - delete(dto)
    - List<dto> findAll(... liste des filtres de requête)

    Bref, le DAO est un peu plus compliqué que le DTO

    EDIT : damned, grillé
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    EDIT : damned, grillé
    Peut être mais c'est moins laconique que mon texte
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 629
    Points : 10 554
    Points
    10 554
    Par défaut
    Citation Envoyé par wax78 Voir le message
    DTO qui veut dire "Data Transfer Object" sont des objets qui vont contenir les données en tant que tel (exemple le DTO Client qui va contenir des propriété genre Nom, Prenom, Adresse, etc). Ils ne contiennent généralement pas de logique métier
    Effectivement, ce n'est pas qu'un gros sac à données (comme une structure en langage C) : il y a toutes les méthodes pour configurer, remettre à zéro, nettoyer ces données.

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2017
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2017
    Messages : 176
    Points : 99
    Points
    99
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    On commence par le plus simple, le DTO (Data Transfer Object) :
    C'est un objet qui défini la structure des informations à échanger, généralement, Serializable.
    En gros, c'est l'objet qui circule entre les différentes couches de ton application.

    Le DAO (Data Access Object) :
    C'est l'objet qui contient les méthodes d'accès aux données de la base de données.
    On peut utiliser JDBC ou JPA ou Hibernate (ou autre ORM) pour le faire mais c'est bien cette classe qui s'en occupe.
    On y retrouve généralement les méthodes de base :
    - create(...) pour créer un enregistrement en DB
    - update(...) pour modifier un enregistrement existant en DB
    - delete(...) pour supprimer l'enregistrement en DB
    - findAll(...) pour récupérer la liste des enregistrements correspondant aux critères
    - get(...) (ou find(...)) pour récupérer l'enregistrement sur sa clé primaire

    Les paramètres de ces méthodes dépendent un peu de la technologie, avec JPA on serait tenté d'avoir un entity en paramètre mais on pourrait systématiquement utiliser le DTO :
    - create(dto)
    - upate(dto)
    - delete(dto)
    - List<dto> findAll(... liste des filtres de requête)

    Bref, le DAO est un peu plus compliqué que le DTO

    EDIT : damned, grillé
    Merci pour ton explication limpide

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    On commence par le plus simple, le DTO (Data Transfer Object) :
    C'est un objet qui défini la structure des informations à échanger, généralement, Serializable.
    En gros, c'est l'objet qui circule entre les différentes couches de ton application.
    Le DTO est plus spécifique d'un objet de transport entre les couches. Il s'agit d'un objet qui transite entre les couches réseau. Son but est de regrouper toutes les informations nécessaires à un traitement distant. On peut imaginer par exemple un front devant appeler un back et pour éviter de faire de multiples appels, on met toutes les données nécessaires dans ce DTO.

    Je précise car j'ai constaté plusieurs fois des projets où les développeurs utilisaient le terme de DTO pour des objets internes au back, et c'est une erreur qui apporte de la confusion, de la complexité à l'architecture et au code, surtout lorsque l'on est nouveau développeur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quelle est la différence entre un DTO et un POCO ?
    Par Skalp dans le forum Contribuez
    Réponses: 30
    Dernier message: 08/04/2020, 21h57
  2. Différence entre ado1, ado2, DAO
    Par hellalaboy dans le forum C#
    Réponses: 1
    Dernier message: 12/09/2009, 20h14
  3. [N-Tier] Division de l'application en couche et DAO, DTO, MVC
    Par damien77 dans le forum Autres
    Réponses: 3
    Dernier message: 08/01/2009, 17h19
  4. DAO et VBA, différence
    Par binouzzz19 dans le forum VBA Access
    Réponses: 5
    Dernier message: 25/05/2007, 14h42

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