我正在我的模型中应用域驱动设计聚合模式。我遵循常见的DDD聚合模式示例:Order
是管理一个或多个LineItem
的根聚合。在我在网络上找到的汇总模式的许多示例中,LineItem
不应该对他们的Order
了解任何内容。
我将使用Hibernate JPA来实现这种模式。这将实现从Order
到LineItem
的单向一对多映射。基于该模型,可以直观地将Order
(聚合根)作为拥有方。
然后,我读到了描述Hibernate集合中反模式的https://fedcsis.org/proceedings/2013/pliks/322.pdf。它提到一对多作为拥有者是反模式,因为Hibernate将发出额外的查询。但是,反模式完全适合我的Order
- LineItem
聚合模式实现。
我应该如何在Hibernate中实现DDD聚合模式(例如,添加或更新LineItem
的唯一方法是来自Order
)?
答案 0 :(得分:2)
DDD指出了设计的最佳方式,然后让您从那里进行优化。在这种情况下,因为你的实现细节(IE hibernate)为"最好的"做了坏事。设计,你必须采用更高性能的设计。当然假设实际上有性能受损。
所以,正确构建,然后进行优化。过早优化是万恶之源:http://c2.com/cgi/wiki?PrematureOptimization