# Java > Gnral Java > Persistance des donnes >  Diffrence DAO et DTO

## Cisman

Bonjour, je suis sur un projet java, et je dois faire des requtes CRUD sur une base de donnes, mes requtes spares 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 diffrence entre DAO et DTO...

Si quelqu'un d'agurri pouvait m'expliquer.

----------


## wax78

DTO qui veut dire "Data Transfer Object" sont des objets qui vont contenir les donnes en tant que tel (exemple le DTO Client qui va contenir des proprit genre Nom, Prenom, Adresse, etc). Ils ne contiennent gnralement pas de "logique mtier"

DAO qui veut dire "Data Access Object" est ce qui va contenir les mthodes permettant de rcuprer, insrer, mettre a jour, effacer tes DTOs dans le systme de stockage (BD, Fichiers, etc.)

----------


## OButterlin

On commence par le plus simple, le DTO (Data Transfer Object) :
C'est un objet qui dfini la structure des informations  changer, gnralement, Serializable.
En gros, c'est l'objet qui circule entre les diffrentes couches de ton application.

Le DAO (Data Access Object) :
C'est l'objet qui contient les mthodes d'accs aux donnes de la base de donnes.
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 gnralement les mthodes de base :
- create(...) pour crer un enregistrement en DB
- update(...) pour modifier un enregistrement existant en DB
- delete(...) pour supprimer l'enregistrement en DB
- findAll(...) pour rcuprer la liste des enregistrements correspondant aux critres
- get(...) (ou find(...)) pour rcuprer l'enregistrement sur sa cl primaire

Les paramtres de ces mthodes dpendent un peu de la technologie, avec JPA on serait tent d'avoir un entity en paramtre mais on pourrait systmatiquement utiliser le DTO :
- create(dto)
- upate(dto)
- delete(dto)
- List<dto> findAll(... liste des filtres de requte)

Bref, le DAO est un peu plus compliqu que le DTO  :;): 

EDIT : damned, grill  ::aie::

----------


## wax78

> EDIT : damned, grill


Peut tre mais c'est moins laconique que mon texte  :;):

----------


## foetus

> DTO qui veut dire "Data Transfer Object" sont des objets qui vont contenir les donnes en tant que tel (exemple le DTO Client qui va contenir des proprit genre Nom, Prenom, Adresse, etc). Ils ne contiennent gnralement pas de logique mtier


Effectivement, ce n'est pas qu'un gros sac  donnes (comme une structure en langage C) : il y a toutes les mthodes pour configurer, remettre  zro, nettoyer ces donnes.

----------


## Cisman

> On commence par le plus simple, le DTO (Data Transfer Object) :
> C'est un objet qui dfini la structure des informations  changer, gnralement, Serializable.
> En gros, c'est l'objet qui circule entre les diffrentes couches de ton application.
> 
> Le DAO (Data Access Object) :
> C'est l'objet qui contient les mthodes d'accs aux donnes de la base de donnes.
> 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 gnralement les mthodes de base :
> - create(...) pour crer un enregistrement en DB
> ...


Merci pour ton explication limpide  ::bravo::

----------


## stefv

> On commence par le plus simple, le DTO (Data Transfer Object) :
> C'est un objet qui dfini la structure des informations  changer, gnralement, Serializable.
> En gros, c'est l'objet qui circule entre les diffrentes couches de ton application.


Le DTO est plus spcifique d'un objet de transport entre les couches. Il s'agit d'un objet qui transite entre les couches *rseau*. Son but est de regrouper toutes les informations ncessaires  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 donnes ncessaires dans ce DTO.

Je prcise car j'ai constat plusieurs fois des projets o les dveloppeurs 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 dveloppeur.

----------

