411 Stimmen

Datenzugriffsobjekt (DAO) in Java

Ich war in einem Dokument unterwegs und stieß auf einen Begriff namens DAO. Ich fand heraus, dass es sich um ein Data Access Object handelt. Kann mir jemand bitte erklären, was das tatsächlich ist?

Ich weiß, dass es eine Art Schnittstelle zum Zugriff auf Daten aus verschiedenen Arten von Quellen ist, und mitten in dieser kleinen Recherche bin ich auf ein Konzept gestoßen, das Datenquelle oder Datenquellenobjekt heißt, was mich noch weiter verwirrte.

Ich möchte wirklich wissen, was ein DAO programmatisch in Bezug darauf, wo es verwendet wird. Wie wird es verwendet? Links zu Seiten, die dieses Konzept von den grundlegenden Dingen erklären, sind ebenfalls willkommen.

520voto

Rami Punkte 7017

Das Data Access Object ist im Grunde ein Objekt oder eine Schnittstelle, die den Zugriff auf eine zugrunde liegende Datenbank oder einen anderen Persistenzspeicher ermöglicht.

Diese Definition stammt von: http://en.wikipedia.org/wiki/Data_access_object

Sieh dir auch das Sequenzdiagramm hier an: http://www.oracle.com/technetwork/java/dataaccessobject-138824.html

Vielleicht kann dir ein einfaches Beispiel helfen, das Konzept zu verstehen:

Angenommen, wir haben eine Entität, die einen Mitarbeiter repräsentiert:

public class Employee {

    private int id;
    private String name;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

}

Die Mitarbeiter-Entitäten werden in einer entsprechenden Employee-Tabelle in einer Datenbank persistiert. Eine einfache DAO-Schnittstelle zur Bearbeitung der für die Manipulation einer Mitarbeiter-Entität erforderlichen Datenbankoperationen sieht aus wie:

interface EmployeeDAO {

    List findAll();
    List findById();
    List findByName();
    boolean insertEmployee(Employee employee);
    boolean updateEmployee(Employee employee);
    boolean deleteEmployee(Employee employee);

}

Als Nächstes müssen wir eine konkrete Implementierung für diese Schnittstelle bereitstellen, um mit SQL-Server und einer anderen für den Umgang mit Dateien usw. umzugehen.

110voto

VeKe Punkte 8993

Was ist DATA ACCESS OBJECT (DAO) -

Es handelt sich um ein Objekt/Interface, das zum Zugriff auf Daten aus der Datenbank oder Datenspeicher verwendet wird.

WARUM VERWENDEN WIR DAO:

Um das Abrufen von Daten aus einer Datenressource wie einer Datenbank zu abstrahieren.
Das Konzept besteht darin, die "Schnittstelle des Clients einer Datenressource von seinem Datenzugriffsmechanismus zu trennen."
 

Das Problem bei direktem Datenzugriff ist, dass sich die Datenquelle ändern kann. Nehmen wir zum Beispiel an, dass Ihre Anwendung in einer Umgebung bereitgestellt wird, die auf eine Oracle-Datenbank zugreift. Dann wird sie später in einer Umgebung bereitgestellt, die Microsoft SQL Server verwendet. Wenn Ihre Anwendung gespeicherte Prozeduren und datenbankspezifischen Code verwendet (z. B. zur Generierung einer Nummernfolge), wie gehen Sie damit in Ihrer Anwendung um? Sie haben zwei Optionen:

  • Passen Sie Ihre Anwendung an, um anstelle von Oracle SQL Server zu verwenden (oder fügen Sie bedingten Code hinzu, um die Unterschiede zu behandeln), oder
  • Erstellen Sie eine Ebene zwischen Ihrer Anwendungslogik und den Datenschnittstellen

Das DAO-Muster besteht aus folgendem:

  • Data Access Object Interface - Diese Schnittstelle definiert die standardmäßigen Operationen, die an einem oder mehreren Modellobjekten durchgeführt werden sollen.
  • Data Access Object Konkrete Klasse - Diese Klasse implementiert die obige Schnittstelle. Diese Klasse ist verantwortlich für das Abrufen von Daten aus einer Datenquelle, die eine Datenbank / XML oder einen anderen Speichermechanismus sein kann.
  • Modellobjekt oder Wertobjekt - Dieses Objekt ist ein einfaches POJO mit get/set-Methoden zum Speichern von Daten, die mithilfe der DAO-Klasse abgerufen wurden.

Beispiele anzeigen

Ich hoffe, das hat Ihr Verständnis von DAO geklärt!

15voto

umanganiello Punkte 756

DAO (Data Access Object) ist ein sehr häufig verwendetes Designmuster in Unternehmensanwendungen. Es ist im Grunde das Modul, das verwendet wird, um Daten aus jeder Quelle (DBMS, XML und so weiter) abzurufen. Ich empfehle Ihnen, einige Beispiele zu lesen, wie dieses hier:

DAO Beispiel

Bitte beachten Sie, dass es verschiedene Möglichkeiten gibt, das originale DAO-Muster umzusetzen und es viele Frameworks gibt, die Ihre Arbeit vereinfachen können. Beispielsweise werden ORM (Object Relational Mapping) Frameworks wie iBatis oder Hibernate verwendet, um das Ergebnis von SQL-Abfragen auf Java-Objekte abzubilden.

Hoffe, es hilft, Tschüss!

9voto

babu Punkte 91

Das Data Access Object Pattern oder DAO-Pattern wird verwendet, um die API oder Operationen für den Niedrigpegel-Datenzugriff von den Diensten des Hochpegel-Business zu trennen. Folgende Teilnehmer gibt es beim Data Access Object Pattern.

Data Access Object Interface - Diese Schnittstelle definiert die Standardoperationen, die an einem Modell-Objekt oder mehreren Modell-Objekten durchgeführt werden sollen.

Data Access Object konkrete Klasse - Diese Klasse implementiert die obige Schnittstelle. Diese Klasse ist dafür verantwortlich, Daten von einer Datenquelle abzurufen, die eine Datenbank, XML oder ein beliebiger anderer Speichermechanismus sein kann.

Modell-Objekt oder Wert-Objekt - Dieses Objekt ist ein einfaches POJO, das get/set-Methoden enthält, um die mit der DAO-Klasse abgerufenen Daten zu speichern.

Beispielcode hier.

9voto

ArunValaven Punkte 1673

Lassen Sie sich nicht von zu vielen Erklärungen verwirren. DAO: Schon vom Namen her bedeutet es Datenzugriff mit Objekt. DAO ist von anderen Geschäftslogiken getrennt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X