此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Data Relational 3.5.2spring-doc.cadn.net.cn

领域驱动设计和关系数据库

所有 Spring Data 模块的灵感都来自领域驱动设计中的“存储库”、“聚合”和“聚合根”概念。 这些对于 Spring Data JDBC 来说可能更为重要,因为它们在某种程度上与使用关系数据库时的正常做法相反。spring-doc.cadn.net.cn

聚合是一组实体,保证在原子更改之间保持一致。 一个典型的例子是OrderOrderItems. 属性Order(例如,numberOfItems与实际数量一致OrderItems) 在进行更改时保持一致。spring-doc.cadn.net.cn

不保证聚合之间的引用始终一致。 它们最终保证会保持一致。spring-doc.cadn.net.cn

每个聚合只有一个聚合根,它是聚合的实体之一。 聚合仅通过该聚合根上的方法进行作。 这些就是前面提到的原子变化。spring-doc.cadn.net.cn

存储库是持久存储的抽象,看起来像是特定类型的所有聚合的集合。 对于一般的 Spring Data,这意味着您想要一个Repository每个聚合根。 此外,对于 Spring Data JDBC,这意味着可从聚合根访问的所有实体都被视为该聚合根的一部分。 Spring Data JDBC 假设只有聚合具有存储聚合非根实体的表的外键,而没有其他实体指向非根实体。spring-doc.cadn.net.cn

在当前实现中,从聚合根引用的实体被删除并由 Spring Data JDBC 重新创建。

您可以使用与您的工作和设计数据库风格相匹配的实现覆盖存储库方法。spring-doc.cadn.net.cn