如需最新的稳定版本,请使用 Spring Data Neo4j 7.4.0! |
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 驱动程序,而无需在映射框架和驱动程序之间引入另一个“驱动程序”或“传输”层。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 对象图映射器)现在包含在这个模块本身中。 Spring Data Neo4j 本身是一个对象映射器,专用于 Spring 和 Spring Boot 应用程序以及一些受支持的 Jakarta EE 环境。 它不需要或不支持对象映射器的单独实现。
当前 SDN 版本与以前的 SDN+OGM 的显著区别在于
-
SDN 本身就是一个完整的 OGM
-
完全支持不可变实体,因此完全支持 Kotlin 的数据类
-
完全支持 Spring Framework 本身和 Spring Data 中的反应式编程模型
-
Neo4j 客户端和反应式客户端功能,在普通驱动程序上复活了模板的想法,简化了数据库访问
我们提供存储库作为高级抽象,用于存储和查询文档,以及用于通用域访问或通用查询执行的模板和客户端。 所有这些都与 Spring 的应用程序事务集成在一起。
Neo4j 支持的核心功能可以通过 或 the 或 reactive 变体直接使用。
它们都提供了与 Spring 的应用程序级事务的集成。
在较低级别上,您可以获取 Bolt 驱动程序实例,但在这些情况下,您必须管理自己的事务。Neo4jClient
Neo4jTemplate
即使在现代 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)和本地集群部署的交互。
需要理解的概念包括 Neo4j 书签、合并适当的重试机制(如 Spring Retry 或 Resilience4j)的潜在需求(我们推荐后者,因为这些知识也适用于 Spring 之外)以及只读查询与写入查询在 Neo4j 集群上下文中的重要性。