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.