DAO & DTO
Cette conférence aborde les concepts de DAO (Data Access Object) et DTO (Data Transfer Object), deux patrons de conception essentiels dans le développement d'applications logicielles.
D'après le document DAO & DTO
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.
Document source
Software Architecture Design Patterns · Institut Supérieur des Études Technologiques · PPTX · 17 pages
Cette conférence aborde les concepts de DAO (Data Access Object) et DTO (Data Transfer Object), deux patrons de conception essentiels dans le développement d'applications logicielles. Elle s'inscrit dans un cours sur les architectures logicielles et la gestion des données, en expliquant leurs rôles, leurs différences et leur complémentarité dans la structuration des échanges entre les couches d'une application.
Le modèle DAO : objets d'accès aux données
Le DAO, ou objet d'accès aux données, est une abstraction qui permet d'utiliser un langage de programmation pour extraire et manipuler des données dans des bases de données locales ou distantes. Il facilite également la gestion des bases de données, ainsi que des objets et de leur structure.
L'utilité principale des DAO réside dans leur capacité à :
- Faciliter la modification du modèle de base de données,
- Factoriser le code d’accès aux données,
- Optimiser les accès à la base en regroupant ces accès dans des objets spécifiques.
Les DAO répondent à plusieurs problématiques liées à la persistance des données :
- La variation du code de persistance selon le type de support (base relationnelle, base objet, fichiers, etc.),
- Les différentes implémentations des fournisseurs de systèmes de gestion de bases de données (SGBD),
- La difficulté à changer de support de persistance lorsque le code métier est imbriqué avec le code de persistance.
La solution proposée par le modèle DAO est de séparer clairement les opérations d'entrée-sortie des classes métier. Pour cela, un objet particulier, le DAO, est utilisé afin d'abstraire et d'encapsuler les accès aux données.
Les DAO sont généralement placés dans la couche dite « d’accès aux données », qui peut être sur une machine différente de la couche métier. Cette séparation implique souvent des appels distants entre les DAO et les objets métiers. Pour améliorer la performance de ces échanges, l'utilisation de DTO est recommandée.
Schématiquement, les DAO permettent d'accéder à la base de données et sont utilisés par les couches métiers pour manipuler les données sans se soucier des détails de persistance.
Le modèle DTO : objets de transfert de données
Le DTO, ou objet de transfert de données, est un patron de conception utilisé pour simplifier le transfert de données entre les sous-systèmes d'une application. Contrairement au DAO, le DTO ne contient que des données, sans logique métier. Il offre uniquement des mutateurs (setters) et des accesseurs (getters) pour modifier ou accéder à ses données.
Les DTO sont particulièrement utiles dans les architectures distribuées où les DAO résident près de la base de données, tandis que le code utilisateur peut se trouver sur une couche distante. Les DTO permettent alors de transporter efficacement les données entre ces couches distantes.
Un problème courant dans ce contexte est le nombre élevé d'appels distants nécessaires pour récupérer plusieurs informations d'un objet distant. Par exemple, pour obtenir le nom, prénom, salaire et lieu de travail d’un employé, il faudrait plusieurs appels si on utilise directement les accesseurs des objets métiers distants.
La solution consiste à créer un DTO qui contient toutes les valeurs nécessaires en une seule fois. Cet objet est construit sur le site distant et transféré au client en un seul appel, réduisant ainsi la latence et la charge réseau.
Les cas d’utilisation typiques des DTO incluent :
- Le transport de données d’objets distants non sérialisables ou non transportables sur le réseau,
- Le regroupement de plusieurs objets distants en un seul objet, par exemple une facture avec toutes ses lignes et informations associées,
- Il est conseillé d’éviter les DTO dans les applications locales non distribuées afin d’éviter une complexité inutile.
Différences entre DAO et DTO
Le DAO (Data Access Object) encapsule la logique de récupération, d’enregistrement et de mise à jour des données dans un système de stockage (base de données, fichiers, etc.). Il agit comme une interface entre la base de données et les objets métiers.
Le DTO (Data Transfer Object), quant à lui, est utilisé uniquement pour transférer les données entre différentes parties de l’application. Il ne contient que des champs privés, des getters, setters et constructeurs, sans logique métier, bien que des méthodes utilitaires puissent y être ajoutées.
Voici un exemple simplifié des interfaces DAO et DTO :
interface DAO {
void save(Entity entity);
Entity findById(int id);
void update(Entity entity);
void delete(int id);
}
class DTO {
private int id;
private String name;
private String value;
// getters et setters
}
Conclusion
Les modèles DAO et DTO jouent un rôle clé dans l’architecture MVC (Modèle-Vue-Contrôleur). Le DAO s’occupe de la gestion des données et de leur persistance, tandis que le DTO facilite le transfert efficace de ces données entre les différentes couches, notamment dans des architectures distribuées. Ensemble, ils contribuent à une meilleure organisation et modularité de l’application, en séparant clairement les responsabilités liées à la persistance et au transport des données.
Points clés
- Le DAO permet d’abstraire et d’encapsuler l’accès aux données dans une base, facilitant la maintenance et l’évolution du code.
- Le DTO sert à transférer les données entre couches, notamment dans des architectures distribuées, en regroupant plusieurs informations en un seul objet.
- Les DAO sont situés près de la base de données, tandis que les DTO circulent entre les couches distantes pour optimiser les échanges.
- Le DAO contient la logique de persistance, le DTO ne contient que des données sans logique métier.
- Utiliser un DTO réduit le nombre d’appels distants nécessaires pour récupérer plusieurs données d’un objet distant.
- Dans une architecture MVC, DAO et DTO sont des composants essentiels pour organiser la gestion et le transfert des données.
Commentaires
Aucun commentaire pour le moment. Posez la première question.