Spring Data Neo4j 簡介
Spring Data Neo4j,簡稱 SDN,是下一代 Spring Data 模組,由 Neo4j, Inc. 與 VMware 的 Spring Data 團隊緊密協作建立和維護。它支援所有官方支援的 Neo4j 版本,包括 Neo4j AuraDB。Spring Data Neo4j 專案將上述 Spring Data 概念應用於使用 Neo4j 圖形資料儲存的解決方案開發。
SDN 完全依賴 Neo4j Java Driver,在對映框架和驅動程式之間不引入其他“驅動程式”或“傳輸”層。Neo4j Java Driver——有時被稱為 Bolt 或 Bolt 驅動程式——被用作一種協議,很像 JDBC 用於關係資料庫。
SDN 是一個物件圖對映(OGM)庫。OGM 將圖中的節點和關係對映到域模型中的物件和引用。物件例項對映到節點,而物件引用則使用關係進行對映,或序列化為屬性(例如對 Date 的引用)。JVM 原語對映到節點或關係屬性。OGM 抽象了資料庫,提供了一種便捷的方式來將您的域模型持久化到圖中並查詢它,而無需直接使用低階驅動程式。它還為開發人員提供了靈活性,可以在 SDN 生成的查詢不足時提供自定義查詢。
SDN 是先前 SDN 版本 5 的正式繼承者,本文件稱之為 SDN+OGM。SDN 版本 5 使用了一個獨立的物件對映框架,類似於 Spring Data JPA 與 JPA 的關係。那個獨立層(即 Neo4j-OGM(Neo4j Object Graph Mapper))現在包含在此模組本身中。Spring Data Neo4j 本身就是一個物件對映器,專用於 Spring 和 Spring Boot 應用以及一些受支援的 Jakarta EE 環境。它不要求或支援獨立的物件對映器實現。
當前 SDN 版本與先前 SDN+OGM 版本的顯著差異在於
-
SDN 本身就是一個完整的 OGM
-
完全支援不可變實體,因此完全支援 Kotlin 的資料類
-
完全支援 Spring Framework 本身和 Spring Data 中的響應式程式設計模型
-
Neo4j 客戶端和響應式客戶端功能,恢復了在純驅動程式之上使用模板的想法,簡化了資料庫訪問
我們提供倉庫作為儲存和查詢文件的高階抽象,以及用於通用域訪問或通用查詢執行的模板和客戶端。所有這些都與 Spring 的應用事務整合。
Neo4j 支援的核心功能可以直接使用,透過 Neo4jClient
或 Neo4jTemplate
或其響應式變體。它們都與 Spring 的應用層事務整合。在較低級別,您可以獲取 Bolt 驅動程式例項,但在這些情況下,您必須自己管理事務。
您仍然可以使用 Neo4j-OGM,即使在現代 Spring Boot 應用中。但您不能與 SDN 6+ 一起使用它。如果您嘗試這樣做,您將有兩個不同且不相關的持久化上下文中的兩組不同的實體。因此,如果您想堅持使用 Neo4j-OGM 3.2.x,您可以使用 Spring Boot 例項化的 Java 驅動程式,並將其傳遞給 Neo4j-OGM 會話。Neo4j-OGM 3.2.x 仍然受支援,我們建議在 Quarkus 等框架中使用它。然而,在 Spring Boot 應用中,您的主要選擇應該是 SDN。 |
請務必閱讀常見問題,其中我們解決了許多關於我們的對映決策以及如何顯著改進與 Neo4j 叢集例項(例如 Neo4j AuraDB 和本地叢集部署)互動的常見問題。
重要概念包括 Neo4j Bookmarks,可能需要包含適當的重試機制,例如 Spring Retry 或 Resilience4j(我們推薦後者,因為此知識也適用於 Spring 之外),以及讀寫查詢在 Neo4j 叢集上下文中的重要性。