首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DDD、Aggregates和Repos

DDD、Aggregates和Repos
EN

Stack Overflow用户
提问于 2014-10-16 06:07:58
回答 1查看 156关注 0票数 2

我有以下实体(例如):

  • Book
  • Author

Book实体也是一个聚合体,因为它关联了一个或多个Author。现在,我在如何从回购中获取这个聚合方面有了一个问题。我有以下几种情况--我也需要考虑性能:

  1. 列出所有的Book。不需要获取Author的。
  2. 列出所有带有Books名称的Author。显然,我们需要获取Book和相关Author的聚合。
  3. 列出包含作者计数的所有Book。类似于(2),但我不想从回购中获取Authors,而只是计数。

那么我的存储库应该是什么样的呢?具体问题:

  • 我们应该有像findBooksfindBooksWithAuthorsfindBooksWithAuthorsCount这样的方法吗?但这会导致大量的方法,因为我们的实体之间有很多关系。
  • 我们应该只使用findBooks,然后在AuthorsRepo中使用loadAuthors,也就是说,在遇到某些性能问题之前,不要执行连接,然后再进行重构。
  • 我应该创建一些聚合值对象,比如:描述关系的BookAndAuthors吗?

请注意,这个例子是微不足道的-你必须知道我们的模型更丰富,有更多的关系。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-16 07:23:11

是否需要获取此类信息以在UI上显示?

我鼓励您分离您的读写关注点,并使您的存储库接口保持简单(类似于集合接口)。

看一看CQRS,它与DDD的工作非常好,将有助于简化您的设计到很大程度上。

一旦进入CQRS,只需记住CQRS 不一定涉及事件源

在您的例子中,我建议在这篇文章中显示最简单的方法,基本上有一个读取服务(可以称之为Finder),它激发SQL并为您提供UI所需的DTO/Map。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26397356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档