该版本仍在开发中,尚未被视为稳定。对于最新稳定版本,请使用Spring Data Neo4j 8.0.0spring-doc.cadn.net.cn

介绍 Spring Data Neo4j

Spring Data Neo4j,简称SDN,是下一代Spring Data模块,由Neo4j公司VMware的Spring Data Team紧密合作开发和维护。它支持所有官方支持的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 支持的核心功能可以通过以下以下方式直接使用,Neo4jClient或者Neo4j模板或者其反应变体。 所有这些都支持与 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