領域驅動設計和關係資料庫

所有 Spring Data 模組都受到領域驅動設計中“倉儲(repository)”、“聚合(aggregate)”和“聚合根(aggregate root)”概念的啟發。這些對於 Spring Data JDBC 來說可能更為重要,因為它們在某種程度上與使用關係資料庫時的常規做法相反。

聚合是一組實體,保證在對其進行原子性更改時保持一致。一個經典的例子是包含 OrderItemsOrderOrder 上的一個屬性(例如,numberOfItemsOrderItems 的實際數量一致)在更改時保持一致。

跨聚合的引用不保證始終一致。它們保證最終會變得一致。

每個聚合恰好有一個聚合根,它是聚合中的一個實體。聚合只能透過該聚合根上的方法進行操作。這些就是前面提到的原子性更改。

倉儲是對持久化儲存的抽象,它看起來像是一個特定型別的所有聚合的集合。對於一般的 Spring Data 來說,這意味著您希望每個聚合根有一個 Repository。此外,對於 Spring Data JDBC 來說,這意味著從聚合根可達的所有實體都被認為是該聚合根的一部分。Spring Data JDBC 假定只有聚合對儲存聚合的非根實體的表具有外部索引鍵,並且沒有其他實體指向非根實體。

在當前實現中,從聚合根引用的實體會被 Spring Data JDBC 刪除並重新建立。

您可以覆蓋倉儲方法,使用符合您的工作風格和資料庫設計的實現。

© . This site is unofficial and not affiliated with VMware.