gpt4 book ai didi

domain-driven-design - DDD 存储库的优缺点

转载 作者:行者123 更新时间:2023-12-04 00:33:42 25 4
gpt4 key购买 nike

优点:

  • 存储库隐藏了复杂的查询。
  • 存储库方法可以用作事务边界。
  • ORM 很容易被 mock

  • 缺点:
  • ORM 框架已经为持久对象提供了一个类似于集合的接口(interface),存储库的意图是什么。因此存储库给系统增加了额外的复杂性。
  • 使用 findBy 方法时的组合爆炸。使用 Criteria 对象、查询或示例对象可以避免这些方法。但是这样做不需要存储库,因为 ORM 已经支持这些查找对象的方法。
  • 由于存储库是聚合根的集合(在 DDD 的意义上),因此即使只修改了一个子对象,也必须创建和传递聚合根。

  • 问题:
  • 你知道哪些优点和缺点?
  • 你会推荐使用存储库吗? (为什么或为什么不?)
  • 最佳答案

    存储库的要点(如单一职责原则)是抽象获取具有身份的对象的概念。随着我对 DDD 越来越熟悉,我发现将存储库视为主要关注数据持久性,而是将其视为实例化对象并保持其身份的工厂,这并没有什么用处。

    当您使用 ORM 时,您应该以尽可能有限的方式使用他们的 API,给自己一个可能是特定于域的外观。因此,无论您的域仍然只会看到一个存储库。它在另一边有一个 ORM 的事实是一个“实现细节”。

    关于domain-driven-design - DDD 存储库的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1975657/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com