数据访问层应该知道域吗?

Ada*_*ion 2 architecture domain-driven-design

我们正在开发遵循域驱动设计和分层软件架构的Web应用程序,具有以下层:

  • 演示文稿(REST API)
  • 域(实体,DDD中定义的具有特定于域的行为的值对象)
  • 数据访问(DAO classess访问数据库)

以上每个都是一个单独的maven模块,具有向下依赖性,id表示依赖于域和域对数据的访问.

数据访问层是应该返回域类的实例,还是应该在域和数据访问层之间存在隔离?

Dav*_*New 7

是的,您的基础架构层应该知道您的域名的所有内容.具体的存储库类通过提供所需的必要实现来支持您的抽象域接口.

您的基础架构层将依赖于您的域层.

在域驱动设计中帮助您的伟大架构模式是洋葱架构.阅读Jeffery Palermo撰写的这篇文章.


pla*_*alx 5

DDD 中一种常见的持久性抽象是使用存储库模式。

您将在域中定义存储库的接口,并且契约将基于域概念。因此,是的,您可以将聚合根实体直接传递到存储库,并且查询方法也可以直接返回聚合根。

请注意,存储库实现将存在于基础设施层,而不是域中。