Domain driven design 在域对象中使用DAO正确吗?

Domain driven design 在域对象中使用DAO正确吗?,domain-driven-design,Domain Driven Design,我在一个实例中发现了以下内容:“不应该直接从客户机(服务和其他使用者类)调用DAO类。客户机应该始终调用域对象,而域对象反过来应该调用DAO以将数据持久化到数据存储。” 这不是我以前在做DDD时看到的情况。有什么想法吗 谢谢你从文章中引用的最后一句话本可以写得更清楚。我怀疑作者的意思是(重点是我添加的文本): 客户机应始终调用域对象,域对象应调用存储库,存储库应调用DAO,以将数据持久化到数据存储 “不应该调用DAO类 直接来自客户(服务和 其他消费者类别)。客户 应该始终调用域对象 这反过来又

我在一个实例中发现了以下内容:“不应该直接从客户机(服务和其他使用者类)调用DAO类。客户机应该始终调用域对象,而域对象反过来应该调用DAO以将数据持久化到数据存储。”

这不是我以前在做DDD时看到的情况。有什么想法吗


谢谢你从文章中引用的最后一句话本可以写得更清楚。我怀疑作者的意思是(重点是我添加的文本):

客户机应始终调用域对象,域对象应调用存储库,存储库应调用DAO,以将数据持久化到数据存储

“不应该调用DAO类 直接来自客户(服务和 其他消费者类别)。客户 应该始终调用域对象 这反过来又应该称之为道的 用于将数据持久化到数据 商店。”

不,我认为那是完全错误的

域对象可能也不应该引用存储库


如果域对象需要与其他域对象协作,它可以引发域事件或将其他域对象作为方法的参数(在这种情况下,客户端/调用者通过存储库检索所有必要的域对象)。

,我一直认为POJO不应该有任何对存储库的引用?这就是存储库模式的意图。当一个域对象想要与另一个域对象协作时,它会向存储库请求该对象。因此我应该在域对象中放置搜索和报告方法(如getChildrenByABC(a、B、C)?关于分页(getChildren(int offset、int count))呢-你会将所有内容都放在域对象中吗?@Piotr:我不认为使用repository.getChildren是最好的方法。如果他们是父域实体的子实体,并且你需要引用他们,那么当从父域的存储库检索到父实体时,他们应该已经加载到父实体中。你可能应该使用parentObj.Ch儿童而不是repository.getChildren(parentObj)。@qstarin好的,但是我想用它来搜索和分页非常大的集合,或者你有更好的建议吗?