2009-07-06 8 views
36

Nachdem ich in der Schule Java studiert habe, bin ich ziemlich vertraut mit dem DAO-Muster (Data access object). Bei der Arbeit verwende ich .NET. In .NET spricht man oft von der DAL (Data Access Layer). Mir scheint ihr Zweck ziemlich ähnlich zu sein. Die Frage ist also, ob DAO und DAL im Grunde dasselbe sind? Ist der Begriff DAL nur so erfunden, dass er nicht mit Data Access Objects verwechselt wird?Was ist der Unterschied zwischen DAO und DAL?

+1

Ich dachte immer, DAL als Daten Abstraktionsschicht – davidsleeps

Antwort

57

Die Datenzugriffsebene (DAL) ist die Schicht eines Systems, das zwischen der Geschäftslogikschicht und der Persistenz-/Speicherschicht besteht. Eine DAL kann eine einzelne Klasse sein oder aus mehreren DAO (Data Access Objects) bestehen. Es kann eine Fassade über der Oberfläche haben, mit der die Business-Schicht sprechen kann, wodurch die Komplexität der Datenzugriffslogik verborgen bleibt. Es kann sich um ein Objektrelationales Mapping-Tool (ORM) von Drittanbietern wie Hibernate handeln.

DAL ist ein architektonischer Begriff, DAOs sind ein Design-Detail.

+4

Lassen Sie uns sagen, ich habe eine Schnittstelle namens DAO, die Methoden wie getCustomer() hat. Die Schnittstelle wird von der SqlServerDAO-Klasse implementiert. Wenn getCustomer() aufgerufen wird, ruft SqlServerDAO die Daten aus der Datenbank ab, erstellt und gibt das Customer-Objekt zurück. In diesem Fall besteht die DAL aus DAO-Schnittstelle und SqlServerDAO-Klasse, oder? – simoraman

+0

Das klingt richtig für mich. –

+6

+1 für "DAL ist ein architektonischer Begriff, DAOs sind ein Design-Detail." – svirk

11

Eine Datenzugriffsebene enthält viele Datenzugriffsobjekte.

Es ist die primäre Rolle, die Geschäftslogik von der Datenbanklogik und Implementierung zu entkoppeln.

Zum Beispiel kann die DAL eine einzige Methode haben, die Daten aus mehreren Tabellen, Abfragen oder gespeicherten Prozeduren über ein oder mehrere Datenzugriffsobjekte abruft.

Änderungen an der Datenbankstruktur, DAOs, Stored Procedures oder auch am Datenbanktyp sollten keine Änderungen an der Geschäftslogik zur Folge haben, was auf die Entkopplung durch die DAL zurückzuführen ist.