java - DDD 和 Spring JPA
问题描述
我从 DDD 和 Spring JPA 开始。分离持久层和域层的概念对我来说看起来和工作得很好,但我发现有一个问题:我们正在失去延迟加载,对吗?是否可以在不加载数据库的所有数据的情况下将域对象与实体映射?出于这个原因,我认为停止在实体中使用一对多关系和在域对象中使用聚合可能是一个更好的主意。所以我请教你的建议。这是个好主意吗?我有一个概念,通过停止在域中使用聚合,将一些方法从域对象委托给服务。
所以我想像那样改变某事(我省略了不必要的理解概念元素)。对我来说,构建业务逻辑更简单,因为我们可以直接访问所有对象,但是我们浪费资源,因为每次我们需要一些对象时都需要从数据库中加载大量数据。:
那样做。它使我们可以更好地控制我们需要哪些对象,但是我们在创建业务逻辑时失去了便利,因为我们需要将一些方法委托给服务:
你怎么看待这件事?这是一个好主意还是有更好的方法来解决问题。从数据库加载这么多数据来将对象恢复到内存是有点问题的。这让我有点困惑,因为我看到面向对象编程的标准概念在外部数据库的应用程序中实现是有问题的。
解决方案
我不知道你为什么说你总是要加载整个数据库。
您将只加载聚合的数据,因为规则是聚合通过 id 引用另一个。因此,在一对多关系中,您有一个 id 列表。
存储库加载/存储聚合的数据。
推荐阅读
- vb6 - VB6:在 Windows Server 2019 64 位上找不到 gpib-32.dll
- windows - Powershell,关闭活动窗口
- google-cloud-platform - Google 云平台 - OAuth 发布问题:我真的无法访问的范围
- javascript - 如何在没有人检测到的情况下将全局函数包装在 javascript 中?
- network-programming - Here's a weird one
- laravel - Laravel whereBetween(query) Does not return the correct data. How can query based on latest report of each project?
- encoding - How can I interpret coefficients after target encoding with multi-class?
- python-3.x - Boxplot for timeseries: The truth value of a Series is ambiguous error
- reactjs - Calculate width after component has rendered?
- r - 如何删除 R 中与前一行重复的行?