Domain Driven Design的聚合模式和Hibernate @OneToMany单向

时间:2014-02-21 17:03:18

标签: java hibernate design-patterns jpa domain-driven-design

我正在我的模型中应用域驱动设计聚合模式。我遵循常见的DDD聚合模式示例:Order是管理一个或多个LineItem的根聚合。在我在网络上找到的汇总模式的许多示例中,LineItem不应该对他们的Order了解任何内容。

我将使用Hibernate JPA来实现这种模式。这将实现从OrderLineItem的单向一对多映射。基于该模型,可以直观地将Order(聚合根)作为拥有方。

然后,我读到了描述Hibernate集合中反模式的https://fedcsis.org/proceedings/2013/pliks/322.pdf。它提到一对多作为拥有者是反模式,因为Hibernate将发出额外的查询。但是,反模式完全适合我的Order - LineItem聚合模式实现。

我应该如何在Hibernate中实现DDD聚合模式(例如,添加或更新LineItem的唯一方法是来自Order)?

1 个答案:

答案 0 :(得分:2)

DDD指出了设计的最佳方式,然后让您从那里进行优化。在这种情况下,因为你的实现细节(IE hibernate)为"最好的"做了坏事。设计,你必须采用更高性能的设计。当然假设实际上有性能受损。

所以,正确构建,然后进行优化。过早优化是万恶之源:http://c2.com/cgi/wiki?PrematureOptimization