代码之家  ›  专栏  ›  技术社区  ›  7wp

存储库应该同时加载和保存实体吗?

  •  1
  • 7wp  · 技术社区  · 14 年前

    在我的设计中,我有从数据库中获取实体的存储库类(它是如何做到这一点并不重要)。但是要将实体保存回数据库,让存储库也这样做有意义吗?或者,创建另一个类(如UnitofWork)是否更有意义,通过让它接受实体和调用 save() 告诉它去做它的魔法?

    3 回复  |  直到 14 年前
        1
  •  5
  •   Thomas Weller    14 年前

    在DDD中,存储库绝对是 所有 与持久性相关的东西应该存在。

    如果保存到多个类中封装的数据库并从中加载,那么与数据库相关的代码将分布在代码库中过多的地方,从而使维护工作变得非常困难。此外,很有可能这段代码的后来的读者可能一眼就不理解它,因为这样的设计不符合大多数开发人员希望找到的准标准。

    当然,如果您的项目中适合的话,您可以有单独的读/写助手类。但从业务层来看,实现持久性的唯一途径应该是存储库…

    嗯!
    托马斯

        2
  •  1
  •   djna    14 年前

    我将赋予存储库封装加载和保存的所有方面的总体责任。这确保了一些棘手的问题,如管理读者和作者之间的争用,有一个地方需要管理。

    存储库可能会很好地使用UnitOfWork类,并且可能需要公开beginow和commit方法。

        3
  •  1
  •   Arnis Lapsa    14 年前

    福勒 says 存储库API应该模拟集合:

    存储库在域和数据映射层之间进行中介,其作用类似于 内存中的域对象集合 .