请使用 Spring Data Neo4j 8.0.4(最新稳定版本)!spring-doc.cadn.net.cn

介绍 Spring Data Neo4j

Spring Data Neo4j(简称 SDN)是下一代 Spring Data 模块,由 Neo4j, Inc. 开发并维护,并与 VMware 的 Spring Data 团队紧密合作。它支持所有官方发布的 Neo4j 版本,包括 Neo4j AuraDB。Spring Data Neo4j 项目将上述 Spring Data 的概念应用于基于 Neo4j 图数据存储的解决方案开发。spring-doc.cadn.net.cn

SDN 完全依赖 Neo4j Java 驱动程序,在映射框架与驱动程序之间不引入任何其他“驱动程序”或“传输”层。Neo4j Java 驱动程序——有时被称为 Bolt 或 Bolt 驱动程序——作为协议使用方式类似于 JDBC 在关系型数据库中的应用。spring-doc.cadn.net.cn

SDN 是一个对象图映射(OGM)库。</p><p>OGM 将图中的节点和关系映射到领域模型中的对象和引用。</p><p>对象实例映射为节点,而对象引用则通过关系映射,或序列化为属性(例如对 Date 类型的引用)。</p><p>JVM 原始类型映射为节点或关系的属性。</p><p>OGM 抽象了数据库,并为开发者提供了一种便捷的方式,将领域模型持久化到图数据库中并进行查询,而无需直接使用底层驱动程序。</p><p>它还为开发者提供了灵活性,使其能够提供自定义查询,以应对 SDN 自动生成的查询无法满足需求的情况。spring-doc.cadn.net.cn

SDN 是先前 SDN 版本 5 的 官方继任者,本文档中将该版本称为 SDN+OGM。
SDN 版本 5 使用了一个独立的对象映射框架,其方式类似于 Spring Data JPA 与 JPA 的关系。
该独立层,即 Neo4j-OGM(Neo4j 对象图映射器),现已包含在此模块本身之中。
Spring Data Neo4j 本身即为一个对象映射器,专为在 Spring 及 Spring Boot 应用程序以及部分支持的 Jakarta EE 环境中使用而设计。
它无需也不支持单独的对象映射器实现。spring-doc.cadn.net.cn

当前 SDN 版本与先前的 SDN+OGM 相比,具有以下值得注意的特性spring-doc.cadn.net.cn

我们提供 存储库,作为存储和查询文档以及模板的高层抽象,并提供用于通用领域访问或通用查询执行的客户端。所有这些都与 Spring 的应用事务集成。spring-doc.cadn.net.cn

Neo4j 支持的核心功能可直接使用,无论是通过 Neo4jClientNeo4jTemplate 还是其响应式变体之一。所有这些方式均提供与 Spring 应用层事务的集成。在更低的层级上,您可以获取 Bolt 驱动实例,但此时您需自行管理这些情况下的事务。spring-doc.cadn.net.cn

您仍然可以在现代 Spring Boot 应用程序中使用 Neo4j-OGM。

spring-doc.cadn.net.cn

但您无法将其与 SDN 6+ 一起使用。spring-doc.cadn.net.cn

如果您尝试这样做,将会在两个不同且相互无关的持久化上下文中出现两组不同的实体。spring-doc.cadn.net.cn

因此,如果您希望坚持使用 Neo4j-OGM 3.2.x,则应使用 Spring Boot 实例化的 Java 驱动程序,并将其传递给一个 Neo4j-OGM 会话。spring-doc.cadn.net.cn

Neo4j-OGM 3.2.x 仍受支持,我们建议在诸如 Quarkus 这样的框架中使用它。spring-doc.cadn.net.cn

然而,在 Spring Boot 应用程序中,您的首选方案应为 SDN。spring-doc.cadn.net.cn

请确保您阅读了常见问题解答,其中我们解答了许多关于地图决策的常见问题,同时也介绍了如何显著提升与 Neo4j 集群实例(如Neo4j AuraDB及本地集群部署)的交互体验。spring-doc.cadn.net.cn

需要理解的关键概念包括 Neo4j 书签、可能需要引入适当的重试机制,例如 Spring RetryResilience4j(我们推荐后者,因为该知识不仅适用于 Spring,也具有更广泛的适用性),以及在 Neo4j 集群环境中读取操作与写入操作之间的重要区别。spring-doc.cadn.net.cn