我正在阅读Implementing Domain-Driven Design作者:Vaughn Vernon,在有关聚合的章节中显示了以下结构:
这个结构可以使用 Hibernate/NHibernate 轻松映射,因为每个实体通过引用引用聚合根。
但是,他决定将设计重构为:
现在,所有实体都使用 ProductId
值对象来引用根。
如何使用 Hibernate/NHibernate 对此进行建模?
图表的解释可以在这里找到 Effective Aggregate Design by Vaughn Vernon
请您参考如下方法:
在BacklogItem、Rlease、Sprint的hbms中
<component name="productId">
<property name="value" column="product_id"/>
</component>
或者JPA风格
@Embedded
@OverrideAttributes....
private ProductId productId
在这种情况下,BacklogItem 不需要延迟加载 Product,因此一个简单的标识符就足够了。只需将它们视为 hibernate 组件即可。