Spring Data Neo4j 簡介

Spring Data Neo4j,簡稱 SDN,是由 Neo4j, Inc.VMware 的 Spring Data 團隊緊密合作建立和維護的下一代 Spring Data 模組。它支援所有官方支援的 Neo4j 版本,包括 Neo4j AuraDB。Spring Data Neo4j 專案將上述 Spring Data 概念應用於使用 Neo4j 圖形資料儲存的解決方案開發。

SDN 完全依賴 Neo4j Java 驅動程式,在對映框架和驅動程式之間不引入另一個“驅動程式”或“傳輸”層。Neo4j Java 驅動程式——有時被稱為 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 支援的核心功能可以直接透過 Neo4jClientNeo4jTemplate 或其反應式變體使用。它們都與 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 RetryResilience4j(我們推薦後者,因為這些知識也適用於 Spring 之外的環境),以及在 Neo4j 叢集上下文中只讀查詢與寫入查詢的重要性。

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