領域驅動設計和關係資料庫
所有 Spring Data 模組都受到領域驅動設計的“儲存庫”、“聚合”和“聚合根”概念的啟發。 這些概念對於 Spring Data JDBC 可能更為重要,因為它們在某種程度上與使用關係資料庫時的常規實踐相反。
聚合是一組實體,保證在對其進行原子更改之間保持一致。 一個經典的例子是帶有 OrderItems
的 Order
。 Order
上的屬性(例如,numberOfItems
與 OrderItems
的實際數量一致)在進行更改時保持一致。
跨聚合的引用不能保證始終一致。 它們保證最終會變得一致。
每個聚合都只有一個聚合根,它是聚合的實體之一。 聚合只能透過該聚合根上的方法進行操作。 這些是前面提到的原子更改。
儲存庫是對持久儲存的抽象,看起來像某種型別的所有聚合的集合。 對於一般的 Spring Data 而言,這意味著您希望每個聚合根都有一個 Repository
。 此外,對於 Spring Data JDBC,這意味著從聚合根可訪問的所有實體都被認為是該聚合根的一部分。 Spring Data JDBC 假定只有聚合具有指向儲存聚合的非根實體的表的外部索引鍵,而沒有其他實體指向非根實體。
在當前實現中,從聚合根引用的實體由 Spring Data JDBC 刪除並重新建立。 |
您可以重寫儲存庫方法,使其實現與您的工作方式和設計資料庫的風格相匹配。