我有一个名为学校的根实体。它有很多属性,当然就是其中之一。我有学校存储库和课程存储库来独立保存数据课程本身具有1-M关系(1门课程可以有很多科目等)。 就最佳实践/性能而言,我应该先找到学校,然后添加课程并保存,还是应该使用课程存储库独立保存课程?
我也可以简单地使用 courseRepo 并像这样保存。 courseRepository.save(课程)
我想了解哪种方法最好/性能最好。
Spring Data JDBC 强烈基于领域驱动设计。这意味着您应该从语义的角度决定哪些部分属于单个聚合。聚合将由它们的聚合根表示,并一次性持久化(并加载)它们直接或间接引用的所有内容。
其他聚合仅通过 id 引用,有自己的存储库用于加载和保存它们。
有关此的更多信息https://spring.io/blog/2018/09/24/spring-data-jdbc-references-and-aggregates
根据您的描述,我假设
School
、Course
和 Subject
都是单独的聚合,每个都有自己的存储库。虽然 Subject
实际上可能是 Course
的一部分,如果它没有在 Course
之外被引用,但这实际上会让我感到惊讶。