[Das Repository ist] eine weitere Abstraktionsschicht über der Abbildungs Schicht, wo query Konstruktionscode konzentriert.
Die DataMapper
sichert die DB Seite des Zauns muss nicht über die Besonderheiten Ihrer Business-Logik wissen, und wie die Daten im Speicher, indem Sie Ihre Business-Objekte und Ihre Business-Seite des Zauns nicht gehalten müssen wissen, wie die Daten gespeichert sind.
Zur Veranschaulichung, beachten Sie, dass Ihre Daten in der Datenbank als eine Reihe von Zeilen gespeichert werden, sagen jede Zeile ein Element in Ihrem Geschäft. Auf der In-Memory-Seite möchten Sie diese Informationen möglicherweise nicht als Liste von StoreItem
speichern, sondern als zwei Listen, eine für Artikel, die auf Lager sind, und eine andere für nicht vorrätige Artikel. Es wäre der DataMapper
's Job, den Übergang zwischen einer Liste und zwei Listen zu behandeln.
Sie können Dinge komplizieren, indem Sie Listen anderer Objekte und Vererbung auf der Geschäftsseite des Zauns hinzufügen. Der 'DataMapper' müsste von und zu dieser Repräsentation in die relationale DB übersetzen.
Die 'Repository' bietet die Business-Seite die "SELECT * FROM Tabelle WHERE-Bedingung" -Funktionalität. Sie stellen einen Filter bereit und es wird eine Sammlung von Objekten zurückgegeben, die mit diesem Filter übereinstimmen.
Kurz gesagt: Der 'DataMapper' befasst sich mit einzelnen Objekten, das 'Repository' befasst sich mit Objektsammlungen und erweitert die Funktionalität des 'DataMapper'.
Wenn Ihr Data Mapper zu groß ist oder eine große Menge an Abfragen verarbeitet, als Objekte tatsächlich zuzuordnen, führen Sie eine andere Klasse ein, die sich auf die Abfrage von Teilen konzentriert, die Sie als Repository-Muster bezeichnen. – Rockstart