加载整个聚合时的 Spring Data JDBC 性能

问题描述 投票:0回答:1

我有一个名为 School 的聚合根实体。 School 实体包含人员、课程、日程流程、文档等各种聚合实体,从而产生 20 多个属性。这些属性中的大多数都表现出一对多 (1-M) 关系,有些甚至有自己的聚合根。

我的问题涉及添加、修改或删除聚合的过程。目前,我加载整个聚合树,执行必要的修改,然后保存更改。然而,考虑到涉及的大量数据,我担心此操作的潜在费用。

使用各自的存储库直接对数据库表进行修改会更谨慎吗?例如,我可以使用课程存储库通过 ID 更新课程,而不是加载整个学校来更新课程。

我有兴趣了解第一种方法的性能影响以及相关的优缺点。

当我们拥有大量数据时,我们应该采取哪些步骤来避免将来出现任何性能问题。

java spring domain-driven-design spring-data-jdbc
1个回答
0
投票

您的问题中缺少有关您想要实现的行为的信息。如果您希望您的

School
模型始终有效,因为每个
Course
都有属于学校
Staff
的老师分配给它,那么基本上总是需要加载所有模型来检查这些不变量。

但这种情况很少发生。更好的解决方案是您明确允许此类问题存在于您的模型中(可能作为它们自己的实体)。这样用户就可以评估不同的选项并修复它们。 (您可能使用的 IDE 在告诉您其他文件中的编译错误时可能会执行类似的工作,但不会阻止您继续编辑当前打开的文件。MS Word 也是如此,让您知道有当前光标位置上方 3 行的单词有拼写错误,但您仍然可以继续输入。)

© www.soinside.com 2019 - 2024. All rights reserved.