所有 Spring Data 模块的灵感都来自领域驱动设计中的“存储库”、“聚合”和“聚合根”概念。 这些对于Spring Data JDBC来说可能更为重要,因为它们在某种程度上与使用关系数据库时的正常做法相反。
聚合是一组实体,保证在原子更改之间保持一致。
一个典型的例子是 .
上的属性(例如,与实际数 一致)在进行更改时保持一致。Order
OrderItems
Order
numberOfItems
OrderItems
不能保证跨聚合的引用始终保持一致。 它们最终会得到保证。
每个聚合都只有一个聚合根,它是聚合的实体之一。 仅通过该聚合根上的方法操作聚合。 这些是前面提到的原子变化。
存储库是对持久性存储的抽象,看起来像某种类型的所有聚合的集合。
对于一般的 Spring Data,这意味着您希望每个聚合根有一个。
此外,对于 Spring Data JDBC,这意味着可从聚合根访问的所有实体都被视为该聚合根的一部分。
Spring Data JDBC 假定只有聚合具有存储聚合的非根实体的表的外键,而没有其他实体指向非根实体。Repository
在当前实现中,从聚合根引用的实体将由 Spring Data JDBC 删除并重新创建。 |
在当前实现中,从聚合根引用的实体将由 Spring Data JDBC 删除并重新创建。 |
您可以使用与您的工作风格和数据库设计风格相匹配的实现来覆盖存储库方法。