5

Gemäß DDD (Blue Book, Evans) ist eine Factory dafür verantwortlich, eine Aggregatwurzel in einem gültigen Zustand zu erstellen. Bedeutet das, dass es in der Lage sein sollte, die technische ID (objectId in der mongoDB-Welt) sowie die Domain-ID zu erstellen?DDD und MongoDB: Ist es in Ordnung, Mongo ObjectIDs zu erstellen?

Auf der einen Seite scheint dies ein technisches Detail zu sein und es scheint in Ordnung zu sein, Mongo die Erstellung der ID zu überlassen.

Auf der anderen Seite stellt die Abfrage nach ID (indem sie in einem DDD-Repository hat) die technische ID der Domäne zur Verfügung, was wiederum die Verantwortung der Factory zur Erstellung dieser Domain macht.

Vielleicht kann ich nicht den Kopf über die verschiedenen Anwendungsfälle/Überlappungen usw. von Technical Ids vs DomainId oder vielleicht bin ich übereifrig, aber ich würde Ihre Meinung sowieso schätzen.

Kurz gesagt: In DDD: Sollte eine Fabrik in der Lage sein, die technische Id sowie die Domain-ID zu erstellen?

mögliche Implementierung: Hallo/Lo (How to set the hilo sequence starting value in MongoDB Norm?)

EDIT: obwohl die hallo/lo Art und Weise macht die Fabrik auf die Persistenz-Schicht, die etwas ist, nur das Repository wissen sollte. hmmm

Dank

+0

Minor nicht ganz relevanten Kommentar; MongoDB erstellt die IDs nicht wirklich, der Client (Treiber) tut dies (mit Ausnahme von Upsert-Operationen). –

Antwort

3

Fabriken müssen sich nicht mit der ID betreffen, da die Gültigkeit eines Aggregats zu Identität orthogonal ist. Identität kann auf verschiedene Arten zugewiesen werden, entweder als inkrementelle ID aus einer relationalen Datenbank, in welchem ​​Fall das Repository sie verwalten muss, oder als UUID/GUID. In diesem Fall kann sie von der Factory oder dem Repository zugewiesen werden Sogar der anrufende Client ist praktisch, weil dann der Client standardmäßig den Schlüssel hat.

Wenn immer möglich, versuche ich eine einheitliche Identität für Aggregate zu erhalten. Ich bin mir nicht sicher, ob MongoDB eine zusätzliche technische ID benötigt, aber wenn dies der Fall ist und die Domain-ID nicht an ihrer Stelle verwendet werden kann, sollte MongoDB sie alleine und hinter den Kulissen verwalten.

+0

"die Gültigkeit eines Aggregats ist orthogonal zur Identität.". Sicher muss in einigen Fällen ein Aggregat eine Identität haben, bevor es als gültig bezeichnet werden kann? –

+0

Aber in der Tat nur eine Domain-Identität (die sollte in der Fabrik richtig eingestellt werden?) Und nicht à Technische ID. Ich kann immer noch nicht verstehen, warum eine separate technische ID in mongodb bevorzugt wird (obwohl nicht erforderlich), aber das ist eine ganz andere Frage –

+0

Ein zugewiesener Identitätswert kann anzeigen, dass ein Aggregat persistent ist, aber die Gültigkeit ist unterschiedlich . Ich sehe sicherlich die Beziehung, ich denke nur, dass Identität in dieser Hinsicht eine besondere Behandlung erfährt ... – eulerfx