DDD并使用Hibernate在db中存储复杂的Value Object

时间:2010-07-27 17:24:47

标签: hibernate domain-driven-design value-objects

在Eric Evans(http://dddcommunity.org/examples)编写的示例DDD项目中,有一个Cargo类,它是一个实体对象,并使用hibernate映射到db表。该Cargo域对象由多个值对象组成,其中一个值为Delivery。此交付值对象非常复杂,因为它有大约10个字段。尽管如此,Delivery是一个扁平的对象,因此它可以完美地呈现在与Cargo相同的表中的db中。

我在我的应用程序中关注了Evans示例,但我遇到了一些困难,希望你能帮助我。

我有一个InvoiceDefinition实体对象,它是一个聚合根。除此之外,它还有一个InvoiceLine类型的字段,它是一个值对象。 InvoiceLine不能与InvoiceDefinition隔离存在。诀窍是InvoiceLine可以是叶子或树节点,其中包含子InvoiceLine值的列表。所以它形成了一个递归结构。

这可以作为有效值对象传递吗? 如何使用hibernate在db中存储这样的值对象?

1 个答案:

答案 0 :(得分:1)

我认为如果价值对象是composite,那就没什么不好了 但是,不变性可能存在问题。

据我所知 - 使用hibernate映射复合有点棘手(here's nhibernate教程)。