Java 领域驱动设计&x27;s聚合模式和休眠@OneToMany单向
我正在我的模型中应用领域驱动的设计聚合模式。我遵循常见的DDD聚合模式示例:Java 领域驱动设计&x27;s聚合模式和休眠@OneToMany单向,java,hibernate,design-patterns,jpa,domain-driven-design,Java,Hibernate,Design Patterns,Jpa,Domain Driven Design,我正在我的模型中应用领域驱动的设计聚合模式。我遵循常见的DDD聚合模式示例:Order是管理一个或多个LineItem的根聚合。在我在web上找到的许多聚合模式示例中,LineItem不应该知道它们的顺序 我将使用HibernateJPA来实现这个模式。这将强制执行从Order到LineItem的单向一对多映射。基于该模型,可以直观地将订单(聚合根)作为拥有方 然后,我阅读了关于Hibernate集合中反模式的描述。它提到一对多作为拥有方是一种反模式,因为Hibernate将发出额外的查询。但是
Order
是管理一个或多个LineItem
的根聚合。在我在web上找到的许多聚合模式示例中,LineItem
不应该知道它们的顺序
我将使用HibernateJPA来实现这个模式。这将强制执行从Order
到LineItem
的单向一对多映射。基于该模型,可以直观地将订单
(聚合根)作为拥有方
然后,我阅读了关于Hibernate集合中反模式的描述。它提到一对多作为拥有方是一种反模式,因为Hibernate将发出额外的查询。但是,反模式正好适合我的顺序
-行项
聚合模式实现
我应该如何在Hibernate中实现DDD聚合模式(例如,添加或更新LineItem
的唯一方法是从其顺序)?DDD指出了最佳的设计方法,然后让您从中进行优化。在这种情况下,由于您的实现细节(即hibernate)不利于“最佳”设计,因此您必须采用更高性能的设计。当然,假设事实上存在性能下降
所以,正确构建它,然后进行优化。过早优化是万恶之源: