许多程序员认为,使用JPA时可以绕过DAO层。

在使用DDD方法时,域层由基础结构区域(包含外部资源,例如存储库实现)和域区域(具有实体,所需的值对象以及存储库接口和服务等)组成。

因此,如果跳过了DOA层,那么基础设施区域是否应成为例如称为“基础设施”的包内领域层的一部分?

如果应将基础结构部件移动到一个单独的层中(一个单独的项目以使环境更干净),那么域层和基础设施层之间的循环依赖关系是否可以接受?实际上,必须共享实体和接口存储库。

否则,我是否应该将实体和存储库接口与域层分开,以便被视为域和基础结构共享的独立事物?

有什么好的做法?

最佳答案

在DDD中,数据访问对象(DAO)是存储库。没有“ DAO层”,持久性是基础结构层的一部分。

正如您提到的,存储库的合同(接口)在域层中定义,而其具体实现位于基础结构层中。

域实体无需引用基础结构,因为实体应该是纯域对象,无需知道它们是如何持久保存的,如何转移到其他系统等等。


  “换句话说,每个层使用一个抽象接口
  代表它的基础架构需求。不知道是什么
  它将使用的基础设施。它只是通过以下方式说明其需求
  一个抽象接口,并希望基础结构实现该接口
  接口并提供所需的功能。”


http://www.artima.com/weblogs/viewpost.jsp?thread=35139

关于java - 使用DDD方法的域层和DAO层,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10400007/

10-10 06:43