Müssen die Entitäten (Domänenobjekte) unter Verwendung des Data Mapper-Musters etwas über den Mapper wissen?

Ich arbeite zum ersten Mal mit Doctrine2, aber ich denke, diese Frage ist allgemein genug, um nicht von einem bestimmten ORM abhängig zu sein.

Sollten die Entitäten in einem Data Mapper-Muster darüber informiert sein - undverwende - der Mapper?

Ich habe ein paar konkrete Beispiele, aber sie scheinen alle auf die gleiche allgemeine Frage hinauszulaufen.

Wenn ich mit Daten aus einer externen Quelle zu tun habe - zum Beispiel einUser hat vieleMessages - und die externe Quelle liefert einfach die neuesten Entitäten (wie einen RSS-Feed), wie kann$user->addMessage($message) Überprüfen Sie, ob Duplikate vorhanden sind, es sei denn, der Mapper wird erkannt oder die Sammlung wird durchsucht (dies scheint ineffizient zu sein).

Natürlich könnte ein Controller oder ein Transaktionsskript vor dem Hinzufügen der Nachricht zum Benutzer nach Duplikaten suchen - aber das scheint nicht ganz richtig zu sein und würde zu einer Duplizierung des Codes führen.

Wenn ich eine große Sammlung habe - wieder einUser mit vielenMessages - wie kann dasUser entity Begrenzung und Paginierung für die Auflistung bereitstellen, ohne einen Mapper-Aufruf tatsächlich weiterzuleiten?

Again, der Controller oder das Transaktionsskript oder was auch immer die Entität verwendet, könnte den Mapper direkt verwenden, um eine Sammlung des @ abzurufeUser 'sMessages Begrenzt durch Anzahl, Datumsbereich oder andere Faktoren - aber auch das würde zu doppelten Codes führen.

Ist die Antwort mit Repositories und macht die Entität auf sie aufmerksam? (Zumindest für Doctrine2 und jedes analoge Konzept, das von anderen ORMs verwendet wird.) Zu diesem Zeitpunkt ist die Entität noch relativ vom Mapper entkoppelt.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage