Question

Je ne l'ai pas vraiment vu des exemples, mais je suppose qu'ils sont enregistrés dans la table de l'entité contenant au sein de la base de données.

Ie. Si j'ai une entité personne / racine globale et une table de personne correspondante, si elle avait une valeur objet appelé Adresse, les valeurs d'adresses seraient enregistrées à l'intérieur de cette table de personne!

Est-ce logique pour un domaine où j'ai d'autres entités telles que les entreprises, etc. qui ont une adresse?

(je en train d'écrire une application de gestion de projet et d'essayer d'entrer dans DDD)

Était-ce utile?

La solution

Il est autorisé à stocker des objets Valeur dans une table séparée, pour les raisons que vous avez parlé. Cependant, je pense que vous êtes mal compris les entités vs VOs - ce n'est pas une préoccupation liée à la persistance

.

Voici un exemple:

Supposons que Entreprise et Personne les deux ont le même courrier Adresse . Laquelle de ces affirmations ne considèrent valables?

  1. "Si je modifie Company.Address, je veux Person.Address pour obtenir automatiquement ces changements "
  2. "Si je modifie Company.Address, il ne doit pas affecter Person.Address "

Si 1 est vrai, Adresse doit être Entité , et donc elle a son propre tableau

Si 2 est vrai, Adresse devrait être Valeur objet . Il pourrait être stocké en tant que composant dans la table de l'entité mère, ou il pourrait avoir son propre table (meilleure normalisation de base de données).

Comme vous pouvez le voir, comment adresse est conservée n'a rien à voir avec la sémantique Entité / VO.

Autres conseils

La plupart des développeurs ont tendance à penser dans la première base de données avant toute autre chose. DDD ne sait pas sur la façon dont la persistance est gérée. C'est au dépôt pour faire face à cela. Vous pouvez persister comme un xml, sql, fichier texte, etc., etc. Entités / agrégats / objets de valeur sont des concepts liés au domaine.

Explication par Vijay Patel est parfait.

J'ai commencé à apprendre DDD avec Eric livre Evans et l'excellent projet Cargo de dddsample comme exemple. http://dddsample.sourceforge.net/

Pour ceux (comme moi) qui veut matérialiser la différence dans la mise en œuvre du code de cette nuance dans la couche modèle de domaine, je dirais:

La méthode overidded égale ou / et sameIdentityAs / SameValueAs (à partir de l'interface et l'entité ValueObject) sont, je pense que, au lieu de leur expression.

Il est juste mon feelin':)

Je pense intéressant de lire aussi:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top