7

Wenn Sie dem Repository-Muster folgen, sagen sie ..., ein Repository für jede Root-Aggregat-Entität zu erstellen.ein Repository für jede Root-Aggregat-Entität im domänengesteuerten Design

Das heißt, wenn ich dieses Modell haben:

Kunde hat Aufträge Auftrag hat Produkte Produktlieferant

etc hat ...

, dass ich 4 Repositories bedeuten würde, die in gesetzt werden Ein Repo. Kunde ist die Root-Entität.

Versteh ich hier etwas falsch?

Antwort

8

Es ist richtig, dass Sie ein Repository pro Aggregat haben sollten. Was jedoch variieren kann, ist die Menge der Aggregate in Ihrer Domain. Das Modell Kunde/Auftrag/Produkt/Lieferant kann auf verschiedene Arten in Aggregate zerlegt werden. Die Zerlegung in Aggregate hängt von einer Vielzahl von Faktoren ab und hängt von der vorliegenden Domäne ab.

Ein Aggregat sollte eine Konsistenzgrenze sein, was bedeutet, dass definiert wird, welche Menge von Entitäten im Kontext von Verhaltensweisen, die diesen Entitäten zugeordnet sind, konsistent sein sollte. Angesichts dieser Einschränkung sollten Objektverweise zwischen Aggregaten eliminiert und durch Identitätsreferenzen ersetzt werden.

In Ihrem Modell könnte es sein, dass Kunde, Bestellung, Produkt und Lieferant unterschiedliche Aggregate sind und daher separate Repositories benötigen. Obwohl der Kunde ein aggregierter Root (Teil des Kundenaggregats) ist und die Bestellung vom Kunden abhängt, bedeutet dies nicht, dass das Kundenrepository das Auftragsrepository enthalten sollte. Das Auftragsrepository sollte vollständig getrennt sein, da Auftrag der Stamm des Auftragsaggregats ist.

Werfen Sie einen Blick auf Effective Aggregate Design by Vaughn Vernon für eingehende Behandlung von wie Aggregate zu entwerfen.

+0

Würdest du bitte korrigieren: "... da Auftrag eine aggregierte Wurzel des Auftragsaggregats ist" – Elisabeth

+0

Ich änderte die Formulierung ein wenig, aber ich bin mir nicht sicher Was wollten Sie korrigiert haben? – eulerfx

+0

hm Ich denke, ich verstehe nicht, warum die Order die Wurzel des Order-Aggregats ist. Können Sie mir sagen, wo die Reihenfolge nicht die Wurzel des Auftragsaggregats ist? Danke für den Link, den ich mit einem Lesezeichen versehen habe. – Elisabeth

0

Sie haben vier Entitäten, die wie oben beschrieben zusammengehören, und das Repository implementiert den Transaktionskontext für alle zugehörigen Entitäten.

+0

Die Frage ist über DDD nicht über Entitäten und Datenmodelle –

Verwandte Themen