590得票11回答
什么是聚合根?

我正在努力理解如何正确使用仓储模式。"聚合根" 这个概念一直出现在相关内容中。在搜索有关 "聚合根" 的帮助时,我发现讨论它们的文章很多,但是链接都已经失效了,没有基础定义。 在仓储模式的背景下,什么是聚合根?

163得票1回答
Spring Data仓库实际上是如何实现的?

我已经使用Spring Data JPA仓库在我的项目中工作了一段时间,我知道以下几点: 在仓库接口中,我们可以添加像findByCustomerNameAndPhone()这样的方法(假设customerName和phone是域对象中的字段)。 然后,Spring通过在运行时(应用程序运...

47得票2回答
仓储库与CQRS如何配合使用?

根据Fowler(这里)所说,存储库“在域和数据映射层之间进行调解,就像是一个内存中的域对象集合。”例如,在我的Courier Service应用程序中,当提交新运行时,我的应用程序服务会创建一个新的Run聚合根对象,填充请求中的值,然后将其添加到RunRepository中,最后调用工作单元...

43得票4回答
仓储模式:如何进行延迟加载?或者,我应该拆分这个聚合吗?

我有一个领域模型,其中包括 Editor(编辑器)和 Project(项目)的概念。 一个 Editor 拥有多个 Projects,并且一个 Project 不仅具有 Editor 所有者,还有多个编辑成员。因此,一个 Editor 也拥有多个“已加入”的 Projects。 我采用 D...

43得票3回答
Django和领域驱动设计

我对领域驱动设计方法感到困惑。从网上的资料中,我了解到这是一种将领域对象和数据库对象分离的方法,但我不理解两者之间的区别。 以Django教程中投票示例的代码为例,有两个模型Polls和Choice。 这些是领域级别对象还是数据库级别对象? 在ORM中是否需要DDD? 如果是,能否提供...

32得票5回答
实体访问存储库是否可行?

我刚开始接触DDD,所以也许这是一个愚蠢的问题... 实体是否可以在运行时通过某个IRepository接口访问存储库以获取值?例如,我想强制执行属性的“默认”选择:class Person { private Company _employer; public Compa...

29得票2回答
DDD - 如何实现高性能的搜索仓库

我有一个关于DDD和仓储模式的问题。 假设我有一个客户仓储库用于客户聚合根。Get和Find方法返回完整的聚合,其中包括Address等对象。这很好。但是当用户在UI中搜索客户时,我只需要摘要聚合-只是一个具有摘要信息的扁平对象。 我可以处理这种情况的一种方式是像平常一样在仓储上调用fin...

19得票2回答
DDD仓库和工厂

我的应用程序由几层组成。 在这个主题中,我们将关注域和基础设施层。 在域层中,我有存储库接口ClientRepositoryInterface。 并且我在基础架构层中有对该接口的实现ClientRepositoryImpl。 但是,在对象存在周期的中间重建对象时,我需要工厂(Reconst...

19得票2回答
在分层架构中,存储库接口应该定义在哪里?

背景 我试图创建一个简单的应用程序,以真正理解整个DDD + TDD +等技术栈。我的目标是在运行时动态注入DAL仓库类。这使得我的域和应用程序服务层可测试。我计划使用“穷人版DI”来完成这个过程...所以我会在启动时在一个简单的控制台应用程序中执行以下操作: // 穷人版依赖...

18得票1回答
领域驱动设计的存储库和Spring Data存储库之间存在不匹配吗?

DDD规定每个聚合应有一个仓储(repository),但是当使用Spring Data JPA时,我们只能在声明每个实体的接口之后才能利用其优势。如何解决这种阻抗不匹配问题? 我希望尝试将存储库接口封装在聚合存储库中,这是可行的解决方案吗?还有更好的选择吗? 以 Customer 为聚合...