Spring Data JDBC 将数据保存为根实体

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

我有一个名为学校的根实体。它有很多属性,当然就是其中之一。我有学校存储库和课程存储库来独立保存数据课程本身具有1-M关系(1门课程可以有很多科目等)。 就最佳实践/性能而言,我应该先找到学校,然后添加课程并保存,还是应该使用课程存储库独立保存课程?

  1. 我的学校就是这样的。 学校学校 = schoolRepository.findById(schoolId);
  2. 然后添加课程 学校.addCourse(课程);
  3. 然后拯救学校。

我也可以简单地使用 courseRepo 并像这样保存。 courseRepository.save(课程)

我想了解哪种方法最好/性能最好。

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

Spring Data JDBC 强烈基于领域驱动设计。这意味着您应该从语义的角度决定哪些部分属于单个聚合。聚合将由它们的聚合根表示,并一次性持久化(并加载)它们直接或间接引用的所有内容。

其他聚合仅通过 id 引用,有自己的存储库用于加载和保存它们。

有关此的更多信息https://spring.io/blog/2018/09/24/spring-data-jdbc-references-and-aggregates

根据您的描述,我假设

School
Course
Subject
都是单独的聚合,每个都有自己的存储库。虽然
Subject
实际上可能是
Course
的一部分,如果它没有在
Course
之外被引用,但这实际上会让我感到惊讶。

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