2010-07-27 17 views
1

Dans l'exemple de projet DDD écrit par Eric Evans (http://dddcommunity.org/examples), il existe une classe Cargo qui est un objet entité et qui est mappée à la table db en mode hibernate. Cet objet de domaine Cargo se compose de plusieurs objets de valeur dont l'un est Delivery. Cet objet de valeur de livraison est assez complexe car il a environ 10 champs. Néanmoins, la livraison est un objet plat donc il se rend parfaitement pour être stocké en db dans la même table que Cargo. J'ai suivi l'exemple d'Evans dans mon application mais je suis arrivé à quelques difficultés et j'espère que vous pourriez m'aider.DDD et stockage d'objets de valeur complexe dans db utilisant Hibernate

J'ai un objet entité InvoiceDefinition, qui est une racine agrégée. Entre autres choses, il a un champ de type InvoiceLine, qui est un objet de valeur. InvoiceLine ne peut pas exister isolément de InvoiceDefinition. L'astuce est que InvoiceLine peut être un nœud feuille ou un arbre avec une liste de valeurs InvoiceLine enfant. Donc, il forme une structure récursive.

Est-ce que cela peut passer comme objet de valeur valide? Comment stocker un tel objet de valeur dans db en utilisant hibernate?

Répondre

1

Je pense qu'il n'y a rien de mal si l'objet valeur est composite.
Il peut cependant y avoir des problèmes d'immuabilité. Pour autant que je sache, mapper des composites en utilisant Hibernate est un peu difficile (here's un tutoriel pour nhibernate).