Patron d'objet d'accès aux données
Le modèle d'objet d'accès aux données ou modèle DAO est utilisé pour séparer les API ou opérations d'accès aux données de bas niveau des services métier de haut niveau. Voici les participants du modèle d'objet d'accès aux données.
- Interface d'objet d'accès aux données- Cette interface définit les opérations standard à effectuer sur un objet modèle.
- Classe concrète d'objet d'accès aux données- Cette classe implémente l'interface mentionnée ci-dessus. Cette classe est responsable de la récupération des données à partir d'une source de données, qui peut être une base de données, XML ou d'autres mécanismes de stockage.
- Objet modèle/Objet valeur- Cet objet est un simple POJO, contenant des méthodes get/set pour stocker les données récupérées à l'aide de la classe DAO.
summary
intention
Séparez la logique d'accès aux données de la logique métier et encapsulez les opérations d'accès aux données dans une classe dédiée.
Principaux problèmes résolus
- Résoudre le problème du couplage fort entre la logique métier et la logique d'accès aux données, en améliorant la maintenabilité et la réutilisabilité du code.
Cas d'utilisation
- Lorsque la logique d'accès aux données de l'application doit être gérée de manière centralisée afin de simplifier la logique métier et de faciliter les opérations sur les données.
Approche d'implémentation
- Définir l'interface DAO: Déclare les méthodes pour les opérations d'accès aux données.
- Implémenter la classe DAO: Implémente l'interface DAO, encapsulant toute la logique d'accès à la source de données (comme une base de données).
- Objet de transfert de données (DTO): Facultatif, utilisé pour encapsuler les données récupérées depuis la source de données.
Code clé
- Interface DAO: Déclare les méthodes pour l'accès aux données et les opérations.
- Implémentation DAO: Fournit une implémentation concrète de l'interface DAO, contenant le code d'accès à la base de données.
Exemple d'application
- Application de gestion des utilisateurs: La classe DAO utilisateur est responsable de l'interaction avec la base de données, gérant les opérations CRUD pour les données utilisateur.
Avantages
- Séparation des préoccupations: Séparer la logique d'accès aux données de la logique métier, réduisant le couplage du système.
- Facile à maintenir: Centralise la logique d'accès aux données pour faciliter la maintenance et les mises à jour.
- Extensibilité: Lors du changement de source de données ou de la modification de la logique d'accès aux données, la couche de logique métier n'est pas affectée.
Inconvénients
- Peut augmenter la complexité: Pour les applications simples, l'introduction du modèle DAO peut ajouter une couche d'abstraction supplémentaire.
Suggestions d'utilisation
- Lorsque l'application doit interagir avec plusieurs sources de données, ou que la logique d'accès aux données est relativement complexe, utilisez le modèle DAO.
Notes
- Les classes DAO doivent être aussi simples que possible, contenant uniquement la logique d'accès aux données et aucune logique métier.
Plusieurs rôles principaux sont inclus
-
Interface DAO (DAO Interface):
- Déclare des méthodes pour l'accès aux données et les opérations.
-
Implémentation DAO:
- Implémentez l'interface DAO, en encapsulant toute la logique d'accès à la source de données.
-
Objet de transfert de données (DTO) (facultatif):
- Encapsulez les données récupérées depuis la source de données pour le transfert de données entre la couche de logique métier et la couche d'accès aux données.
-
Couche de logique métier (Business Logic Layer):
- Utilisez l'interface DAO pour interagir avec la source de données, sans dépendre directement de l'implémentation spécifique de l'accès aux données.
-
Source de données:
- Base de données ou autre stockage persistant, avec lequel les implémentations DAO interagissent pour accéder aux données et les stocker.
Le patron de conception Data Access Object aide à garder une application propre et gérable en fournissant une couche d'accès aux données claire.
Implémentation
Nous allons créer un objet qui sert d'objet modèle ou d'objet valeur,StudentObjet.StudentDaoEst l'interface Data Access Object.StudentDaoImplqui est une classe d'entité qui implémente l'interface Data Access Object.DaoPatternDemo, notre classe de démonstration utiliseStudentDaopour démontrer l'utilisation du patron Data Access Object.
Étape 1
Créer un objet valeur.
Student.java
Étape 2
Crée l'interface de l'objet d'accès aux données.
StudentDao.java
Étape 3
Crée des classes d'entité qui implémentent l'interface ci-dessus.
StudentDaoImpl.java
Étape 4
UtilisationStudentDaopour démontrer l'utilisation du patron d'accès aux données.
DaoPatternDemo.java
Étape 5
Exécutez le programme et affichez le résultat :
Student: [RollNo : 0, Name : Robert ] Student: [RollNo : 1, Name : John ] Student: Roll No 0, updated in the database Student: [RollNo : 0, Name : Michael ]autres extensions