0

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

在使用 DDD 方法时,域层由基础设施区域(包含存储库实现等外部资源)和域区域(包含实体、所需的值对象和存储库接口和服务等)组成。

因此,如果跳过 DOA 层,基础设施区域是否应该成为称为“基础设施”的包中域层的一部分?

如果基础设施部分应该在一个单独的层中移动(分离项目以使事情更清洁),那么域层和基础设施层之间的循环依赖关系是否可以接受?实际上,实体和接口存储库必须是共享的。

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

什么是好的做法?

4

2 回答 2

1

DAO 层和基础设施区域/域区域不是一回事。在实现基础设施/域区域时使用 DAO 层。

您的程序员是正确的,JPA 是 DAO 层。您仍然需要基础设施区域和域区域。如果您必须在这两个区域内实现 DAO 层,它们只会更小/不同。

于 2012-05-01T16:35:21.173 回答
1

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

正如您所提到的,存储库的合同(接口)是在域层中定义的,而它们的具体实现则驻留在基础设施层中。

领域层不需要引用基础设施,因为实体应该是纯领域对象,不知道它们是如何被持久化、如何转移到其他系统等等的。

“换句话说,每一层都使用一个抽象接口来代表它的基础设施需求。它不知道它将使用什么基础设施。它只是通过抽象接口声明它的需求,并期望基础设施实现该接口并提供所需的功能。”

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

于 2012-05-02T12:54:06.973 回答