Data-Access-Object-Muster
Das Data-Access-Object-Muster oder DAO-Muster wird verwendet, um Low-Level-Datenzugriffs-APIs oder -Operationen von High-Level-Geschäftsdiensten zu trennen. Die folgenden Teilnehmer gehören zum Data-Access-Object-Muster.
- Data-Access-Object-Schnittstelle- Diese Schnittstelle definiert die Standardoperationen, die auf einem Modellobjekt ausgeführt werden sollen.
- Konkrete Data-Access-Object-Klasse- Diese Klasse implementiert die oben genannte Schnittstelle. Diese Klasse ist dafür verantwortlich, Daten aus einer Datenquelle abzurufen, bei der es sich um eine Datenbank, XML oder andere Speichermechanismen handeln kann.
- Modellobjekt/Wertobjekt- Dieses Objekt ist ein einfaches POJO, das get-/set-Methoden enthält, um Daten zu speichern, die mithilfe der DAO-Klasse abgerufen wurden.
summary
Absicht
Trennen Sie die Datenzugriffslogik von der Geschäftslogik und kapseln Sie Datenzugriffsvorgänge in einer dedizierten Klasse.
Gelöste Hauptprobleme
- Behebt das Problem der engen Kopplung zwischen Geschäftslogik und Datenzugriffslogik und verbessert die Wartbarkeit und Wiederverwendbarkeit des Codes.
Anwendungsfall
- Wenn die Datenzugriffslogik der Anwendung zentral verwaltet werden muss, um die Geschäftslogik zu vereinfachen und Datenoperationen zu erleichtern.
Implementierungsansatz
- DAO-Schnittstelle definieren: Deklariert Methoden für Datenzugriffsoperationen.
- DAO-Klasse implementieren: Implementiert die DAO-Schnittstelle und kapselt die gesamte Zugriffslogik auf die Datenquelle (z. B. eine Datenbank).
- Datentransferobjekt (DTO): Optional, wird verwendet, um aus der Datenquelle abgerufene Daten zu kapseln.
Schlüsselcode
- DAO-Schnittstelle: Deklariert Methoden für Datenzugriff und -operationen.
- DAO-Implementierung: Stellt eine konkrete Implementierung der DAO-Schnittstelle bereit, die Datenbankzugriffscode enthält.
Anwendungsbeispiel
- Benutzerverwaltungsanwendung: Die Benutzer-DAO-Klasse ist für die Interaktion mit der Datenbank verantwortlich und verwaltet CRUD-Operationen für Benutzerdaten.
Vorteile
- Trennung von Belangen: Trennt die Datenzugriffslogik von der Geschäftslogik, wodurch die Systemkopplung reduziert wird.
- Einfach zu warten: Zentralisiert die Datenzugriffslogik für einfache Wartung und Aktualisierungen.
- Erweiterbarkeit: Wenn die Datenquelle geändert oder die Datenzugriffslogik modifiziert wird, ist die Geschäftslogik-Schicht nicht betroffen.
Nachteile
- Kann die Komplexität erhöhen: Für einfache Anwendungen kann die Einführung des DAO-Musters eine zusätzliche Abstraktionsebene hinzufügen.
Verwendungshinweise
- Wenn die Anwendung mit mehreren Datenquellen interagieren muss oder die Datenzugriffslogik relativ komplex ist, verwenden Sie das DAO-Muster.
Hinweise
- DAO-Klassen sollten so einfach wie möglich sein und nur Datenzugriffslogik enthalten, keine Geschäftslogik.
Mehrere Hauptrollen enthalten
-
DAO-Schnittstelle (DAO Interface):
- Deklariert Methoden für Datenzugriff und -operationen.
-
DAO-Implementierung:
- Implementiert die DAO-Schnittstelle und kapselt die gesamte Zugriffslogik auf die Datenquelle.
-
Datentransferobjekt (DTO) (optional):
- Kapselt die aus der Datenquelle abgerufenen Daten für den Datentransfer zwischen der Geschäftslogikschicht und der Datenzugriffsschicht.
-
Geschäftslogikschicht (Business Logic Layer):
- Verwenden Sie die DAO-Schnittstelle, um mit der Datenquelle zu interagieren, ohne direkt von der konkreten Implementierung des Datenzugriffs abhängig zu sein.
-
Datenquelle:
- Datenbank oder anderer persistenter Speicher, mit dem DAO-Implementierungen interagieren, um auf Daten zuzugreifen und sie zu speichern.
Das Data Access Object Pattern hilft, eine Anwendung sauber und wartbar zu halten, indem es eine klare Datenzugriffsschicht bereitstellt.
Implementierung
Wir werden ein Objekt erstellen, das als Modellobjekt oder Wertobjekt dient,StudentObjekt.StudentDaoIst die Data Access Object-Schnittstelle.StudentDaoImplwelche eine Entitätsklasse ist, die die Data Access Object-Schnittstelle implementiert.DaoPatternDemo, unsere Demo-Klasse verwendetStudentDao, um die Verwendung des Data Access Object Pattern zu demonstrieren.
Schritt 1
Wertobjekt erstellen.
Student.java
Schritt 2
Erstellt die Data-Access-Object-Schnittstelle.
StudentDao.java
Schritt 3
Erstellt Entitätsklassen, die die obige Schnittstelle implementieren.
StudentDaoImpl.java
Schritt 4
VerwendungStudentDaoum die Verwendung des Data-Access-Object-Musters zu demonstrieren.
DaoPatternDemo.java
Schritt 5
Führen Sie das Programm aus und geben Sie das Ergebnis aus:
Student: [RollNo : 0, Name : Robert ] Student: [RollNo : 1, Name : John ] Student: Roll No 0, updated in the database Student: [RollNo : 0, Name : Michael ]Weitere Erweiterungen