dedlfix: Repository Pattern erklären + Anwendungsbeispiel

Beitrag lesen

Tach!

Ich weis das dieses Pattern eine Abstration zur Datenbank darstellt.

Nicht nur. Man kann auch Daten aus anderen Quellen darüber bereitstellen.

Das Programm kann dann über dieses Pattern Objekte einholen, verändern oder senden. Das Pendant zu O/R-Mapper, so mein Wissensstand.

Ein ORM ist eine Schicht, die zwischen dem relationalen DBMS und einem objektorientierten System vermittelt. Ein Repository ist nicht etwa ein Gegenstück dazu, sondern eine Ergänzung. Ein ORM hat die Aufgabe nur die grundlegende Übersetzung vorzunehmen. Ein Repository spricht sozusagen nach unten hin mit dem ORM oder mit anderen Datenquellen, nach oben hin stellt es das bereit, was die Anwendung fachlich braucht. Die Anwendung muss nicht wissen, dass man für die Daten, die sich braucht, beispielsweise Joins oder eine Gruppierung auf die Datentabellen vornehmen muss. Sie will nur einfach ins Repository greifen können und die Daten mundgerecht bekommen. Oder in anderer Richtung für das Speichern bearbeiteter Daten übergibst du dein Objekt. Vielleicht ist es sogar verschachtelt, wenn es eine größere Struktur aus mehreren Einzelobjekten ist. Das Repository nimmt es gegebenenfalls auseinander und veranlasst die Speicherung der Einzelteile in Richtung des verwendeten Datenspeichers.

Für jede der fachlichen Anforderungen an die Datenhaltung muss das Repository eine Funktion bereitstellen. Einen ORM wird man nur einmalig im System haben, es sei denn, man muss mehrere unterschiedlichen Datenbanken bedienen, die alle einen eigenen ORM benötigen. Repositorys hingegen braucht man soviele, wie Themenbereiche abzudecken sind. Man möchte ja die Übersicht behalten und erstellt sich deshalb kein Monster-Repository sondern getrennte für die einzelnen Themen.

Wenn du ein Framework schreibst, wirst du vielleicht ein ORM zur Verfügung stellen, aber eigentlich sollte sich das der Verwender selbst aussuchen können. Für Repositorys brauchst du aber normalerweise nichts vorzusehen, die muss sich der Verwender anhand seiner Aufgabenstellung selbst schreiben.

PS.: Was ist DATA ACCESS LAYER? Sowas wie Repository?

Wenn du ganz grobe Schichten zeichnen möchtest, wie deine Anwendung aussiehst, dann bezeichnet der DAL ganz allgemein die Schicht, in der die Datenzugriffslogik drinsteckt. Was das dann konkret ist, ist nicht definiert. Das kann ein ORM sein, oder eine beliebige andere DBMS-Zugriffstechnik, oder etwas das auf Dateien zugreift, oder irgendwelche über Netzwerk erreichbare Datenquellen verwaltet. Auch alles das zusammen, falls man das für seine Anwendung braucht.

dedlfix.