Nehmen wir ein Beispiel, in dem wir zwei Entitäten haben: ServiceProvider
und TelephoneNumber
. Das System ermöglicht es Dienstanbietern, Telefonnummern hinzuzufügen. Jede von einem Dienstanbieter hinzugefügte Telefonnummer wird durch eine Instanz von TelephoneNumber
dargestellt. Also habe ich eine Verbindung zwischen diesen beiden Entitäten. Für den Moment habe ich entschieden, dass eine TelephoneNumber
Instanz mit genau einem Dienstanbieter verbunden ist. Ich entschied auch, dass diese zwei Entitäten zum selben Aggregat gehören, wobei ServiceProvider
der Gesamtstamm ist (ein Argument ist, dass der TelephoneNumber
Lebenszyklus von der ServiceProvider
Einheit abhängt).Bewegungsrichtung und Leistung
Meine Frage ist über die Traversierungsrichtung der Assoziation. Ich weiß im Voraus, dass ein Dienstanbieter viele Millionen Telefonnummern hinzufügen kann.
Wenn die Traversierichtung der Assoziation von ServiceProvider
zu TelephoneNumber
ist, wie kann man effizient implementieren? Das Speichern eines Satzes von Telefonnummern in der Einheit ServiceProvider
wäre ineffizient (insbesondere für den Speicher). Lazy Loading kann verwendet werden, aber es würde die Implementierungsoptionen einschränken, indem es Frameworks verwendet, die es unterstützen (z. B. Hibernate).
In einem bekannten Beispiel, wo wir haben Customer
und Order
Einheiten, eine unidirektionale Assoziation von Order
zu Customer
wird oft gewählt. Wenn die Durchquerungsrichtung der Zuordnung von TelephoneNumber
zu ServiceProvider
lautet, wie werden die CRUD-Operationen für TelephoneNumber
implementiert? Ich denke, wir müssen eine TelephoneNumberRepository
verwenden? Aber ich sah oft, dass Repositories nur für Aggregatwurzeln definiert werden sollten, da wir im Allgemeinen die aggregierte Root-Instanz erhalten und über dieses mit dem Domänenmodell kommunizieren.
Dank
Verwenden Sie eine relationale Datenbank? –
@PreetKukreti Ja, wir werden in einer ersten Phase eine relationale Datenbank verwenden. –
Wie werden Sie nach dem Hinzufügen auf die Telefonnummern zugreifen? Werden Sie sie massiv laden, nur einige von ihnen entsprechen bestimmten Kriterien ...? Sind Sie sicher, dass eine Telefonnummer nicht mehr ist als nur eine Telefonnummer? Keine anderen Objekte drum herum? – guillaume31