Frage

Ich habe wirklich keine Beispiele gesehen, aber ich nehme an, dass sie innerhalb der Datenbank innerhalb der enthaltenden Objekt-Tabelle gespeichert werden.

Ie. Wenn ich eine Person Einheit / Aggregat Wurzel und eine entsprechende Tabelle Person habe, wenn sie einen Wert Objekt namens Adresse haben, Adresse Werte in dieser Tabelle Person gerettet werden!

Ist das sinnvoll für eine Domain, wo ich andere Entitäten wie Firmen usw., die eine Adresse haben?

(Ich bin derzeit eine Projektmanagement-Anwendung zu schreiben und versuchen, in DDD zu bekommen)

War es hilfreich?

Lösung

Es ist in Ordnung Wert Objekte in einer separaten Tabelle zu speichern, um die Gründe, die Sie beschrieben haben. Aber ich denke, Sie Entities vs VOs sind Missverständnisse - es ist keine Persistenz im Zusammenhang betreffen

.

Hier ist ein Beispiel:

Nehmen wir an, ein Unternehmen und Person haben beide die gleiche Mail Adresse . Welche dieser Aussagen betrachten gültig?

  1. "Wenn ich Company.Address ändern, ich will Person.Address automatisch zu erhalten diese Änderungen "
  2. "Wenn ich Company.Address ändern, es darf nicht beeinflussen Person.Address "

Wenn 1 ist wahr, Adresse sollte einen sein Entity , und deshalb hat es ist eigenen Tisch

Wenn 2 ist wahr, Adresse sollte ein Value Object sein. Man könnte es als eine Komponente in der Tabelle übergeordneten Entität gespeichert werden, oder es könnte eine eigene Tabelle (bessere Datenbank-Normalisierung).

Wie Sie sehen können, wie Adresse beibehalten wird, hat nichts mit Entity / VO Semantik zu tun.

Andere Tipps

Die meisten Entwickler sind in der Regel zunächst vor allem anderen in der Datenbank zu denken. DDD weiß nicht, wie Persistenz behandelt wird. Das ist bis zu dem Repository damit zu umgehen. Sie können es als xml bestehen, SQL, Textdatei, etc etc. Entities / Aggregate / Wert-Objekte Konzepte der Domäne verwandt sind.

Erklärung von Vijay Patel ist perfekt.

Ich habe angefangen, als Beispiel zu lernen, DDD mit Eric Evans Buch und dem ausgezeichneten dddsample Fracht Projekt. http://dddsample.sourceforge.net/

für diejenigen, So (wie ich), die den Unterschied in der Code-Umsetzung dieser Nuance in der Domain Model Schicht materialisieren will, würde ich sagen:

Die overidded Methode Equals oder / und sameIdentityAs / SameValueAs (von der Schnittstelle Entity und ValueObject) sind, glaube ich, den Ort ihres Ausdrucks.

Es ist nur mein Feelin':)

Ich denke, interessant, dies zu lesen:

http://martinfowler.com/bliki/ValueObject.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top