【问题标题】:Domain Driven Design's Aggregates Pattern And Hibernate @OneToMany unidirectional领域驱动设计的聚合模式和休眠@OneToMany 单向
【发布时间】:2014-02-21 17:03:18
【问题描述】:

我在我的模型中应用领域驱动设计聚合模式。我遵循常见的 DDD 聚合模式示例:Order 是管理一个或多个 LineItem 的根聚合。在我在网上找到的许多聚合模式示例中,LineItem 不应该知道他们的Order

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

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

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

【问题讨论】:

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


    【解决方案1】:

    DDD 指出最佳设计方式,然后让您从那里进行优化。在这种情况下,由于您的实现细节(IE hibernate)对“最佳”设计不利,因此您必须采用性能更高的设计。当然,假设实际上存在性能损失。

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

    【讨论】:

      猜你喜欢
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多