此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Data Neo4j 7.5.2spring-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) 库。 OGM 将图中的节点和关系映射到域模型中的对象和引用。 对象实例映射到节点,而对象引用使用关系映射,或序列化到属性(例如,对日期的引用)。 JVM 原语映射到节点或关系属性。 OGM 抽象了数据库,并提供了一种方便的方法来将域模型持久化在图中并对其进行查询,而无需直接使用低级驱动程序。 它还为开发人员提供了灵活性,可以在 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。 但您不能将其与 SDN 6+ 一起使用。 如果您尝试,您将在两个不同且不相关的持久性上下文中拥有两组不同的实体。 因此,如果你想坚持使用 Neo4j-OGM 3.2.x,你可以使用 Spring Boot 实例化的 Java 驱动程序并将其传递给 Neo4j-OGM 会话。 Neo4j-OGM 3.2.x 仍然受支持,我们建议在 Quarkus 等框架中使用。 但是,在 Spring Boot 应用程序中,您的主要选择应该是 SDN。

请务必阅读常见问题,其中我们解决了许多反复出现的问题,这些问题涉及我们的映射决策,以及如何显着改善与 Neo4j 集群实例(如 Neo4j AuraDB)和本地集群部署的交互。spring-doc.cadn.net.cn

需要理解的重要概念是 Neo4j 书签、合并适当的重试机制(例如 Spring RetryResilience4j)的潜在需求(我们推荐后者,因为这些知识也适用于 Spring 之外)以及 Neo4j 集群上下文中只读查询与写查询的重要性。spring-doc.cadn.net.cn