Spring认证中国教育管理中心-Spring Data Neo4j教程一

article/2025/9/15 16:23:16

原标题:Spring认证中国教育管理中心-Spring Data Neo4j教程一(Spring中国教育管理中心)

Spring认证-Spring Data Neo4j教程一

5. 开始

我们为 SDN 提供了 Spring Boot 启动器。请通过您的依赖管理包含启动模块并配置要使用的螺栓 URL,例如org.neo4j.driver.uri=bolt://localhost:7687. 启动器假定服务器已禁用身份验证。由于 SDN 启动器依赖于 Java 驱动程序的启动器,因此有关配置的所有内容在此处也适用。有关可用属性的参考,请使用org.neo4j.driver命名空间中的 IDE 自动完成功能或查看专用手册。

SDN支持

  • 众所周知和理解的命令式编程模型(很像 Spring Data JDBC 或 JPA)
  • 基于Reactive Streams的反应式编程,包括对反应式事务的完全支持。

这些都包含在同一个二进制文件中。反应式编程模型在数据库端需要 4.0 Neo4j 服务器,另一方面需要反应式 Spring。

5.1准备数据库

对于这个例子,我们停留在movie graph 中,因为它随每个 Neo4j 实例免费提供。

如果您没有正在运行的数据库但安装了 Docker,请运行:

清单 1. 在 Docker 中启动一个本地 Neo4j 实例。

docker run --publish=7474:7474 --publish=7687:7687 -e 'NEO4J_AUTH=neo4j/secret' neo4j:4.3.6

您现在可以访问http://localhost:7474。上面的命令将服务器的密码设置为secret. :play movies请注意在提示符 ( )中准备好运行的命令。执行它以用一些测试数据填充您的数据库。

5.2.创建一个新的 Spring Boot 项目

设置 Spring Boot 项目的最简单方法是start.spring.io (它也集成在主要 IDE 中,以防您不想使用该网站)。

选择“Spring Web Starter”以获取创建基于 Spring 的 Web 应用程序所需的所有依赖项。Spring Initializr 将负责为您创建一个有效的项目结构,其中包含所选构建工具的所有文件和设置。

5.2.1使用 Maven

您可以针对 Spring Initializer 发出curl请求以创建基本的 Maven 项目:

清单 2. 使用 Spring Initializr 创建一个基本的 Maven 项目

curl https://start.spring.io/starter.tgz \-d dependencies=webflux,actuator,data-neo4j  \-d bootVersion=2.5.3 \-d baseDir=Neo4jSpringBootExample \-d name=Neo4j%20SpringBoot%20Example | tar -xzvf -

这将创建一个新文件夹Neo4jSpringBootExample。由于这个启动器还没有在初始化器上,您必须手动将以下依赖项添加到您的pom.xml:

清单 3. 在 Maven 项目中包含
spring-data-neo4j-spring-boot-starter

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>

如果是现有项目,您还可以手动添加依赖项。

5.2.2.使用 Gradle

思路是一样的,只是生成一个Gradle项目:

清单 4. 使用 Spring Initializr 创建一个基本的 Gradle 项目

curl https://start.spring.io/starter.tgz \-d dependencies=webflux,actuator,data-neo4j \-d type=gradle-project \-d bootVersion=2.5.3 \-d baseDir=Neo4jSpringBootExampleGradle \-d name=Neo4j%20SpringBoot%20Example | tar -xzvf -

Gradle 的依赖项如下所示,必须添加到build.gradle:

清单 5. 在 Gradle 项目中包含
spring-data-neo4j-spring-boot-starter

dependencies {implementation 'org.springframework.boot:spring-boot-starter-data-neo4j'
}

如果是现有项目,您还可以手动添加依赖项。

5.3.配置项目

现在在您最喜欢的 IDE 中打开这些项目中的任何一个。查找application.properties并配置您的 Neo4j 凭据:

spring.neo4j.uri=bolt://localhost:7687
spring.neo4j.authentication.username=neo4j
spring.neo4j.authentication.password=secret

这是连接到 Neo4j 实例所需的最低限度。

使用此启动器时,无需添加驱动程序的任何编程配置。此启动器将自动启用 SDN 存储库。

5.4.在模块路径上运行 (Java 9+)

Spring Data Neo4j 可以在模块路径上运行。它的自动模块名称是spring.data.neo4j. 由于当前 Spring Data 构建设置的限制,它本身不提供模块。因此,它使用自动但稳定的模块名称。但是,它确实依赖于模块化库(Cypher-DSL)。由于module-info.java上述限制,我们无法代表您表达对该库的要求。

因此,module-info.java您的项目中在模块路径上运行 Spring Data Neo4j 6.1+ 所需的最低要求如下:

清单 6.module-info.java项目中的 A 应该在模块路径上使用 Spring Data Neo4j

module your.module {requires org.neo4j.cypherdsl.core;requires spring.data.commons;requires spring.data.neo4j;opens your.domain to spring.core; exports your.domain; 
}

Spring Data Neo4j 使用 Spring Data Commons 及其反射功能,因此您spring.core至少需要打开域包。

我们假设这里your.domain还包含存储库:必须导出这些存储库才能被

spring.beans,spring.context和访问spring.data.commons。如果您不想将它们导出到世界,您可以将它们限制在这些模块中。

5.5.创建您的域

我们的领域层应该完成两件事:

  • 将图表映射到对象
  • 提供访问这些

5.5.1示例节点实体

SDN 完全支持 Java 和dataKotlin 中的类的不可修改实体。因此,我们将在这里关注不可变实体,清单 7显示了这样一个实体。

SDN 支持 Neo4j Java 驱动程序支持的所有数据类型,请参阅“Cypher 类型系统”一章中将Neo4j 类型映射到本地语言类型。未来的版本将支持额外的转换器。

清单 7. MovieEntity.java

import java.util.ArrayList;
import java.util.List;import org.springframework.data.neo4j.core.schema.Id;
import org.springframework.data.neo4j.core.schema.Node;
import org.springframework.data.neo4j.core.schema.Property;
import org.springframework.data.neo4j.core.schema.Relationship;
import org.springframework.data.neo4j.core.schema.Relationship.Direction;@Node("Movie") 
public class MovieEntity {@Id private final String title;@Property("tagline") private final String description;@Relationship(type = "ACTED_IN", direction = Direction.INCOMING) private List<Roles> actorsAndRoles;@Relationship(type = "DIRECTED", direction = Direction.INCOMING)private List<PersonEntity> directors = new ArrayList<>();public MovieEntity(String title, String description) { this.title = title;this.description = description;}// Getters omitted for brevity
}

Spring认证-Spring Data Neo4j教程一

@Node用于将此类标记为托管实体。它还用于配置 Neo4j 标签。如果您只是使用 plain ,标签默认为类的名称@Node。

每个实体都必须有一个 id。此处显示的电影类使用该属性title作为唯一的业务键。如果您没有这样的唯一密钥,您可以使用 和 的组合@Id来@GeneratedValue

配置 SDN 以使用 Neo4j 的内部 id。我们还提供 UUID 的生成器。

这显示@Property了为字段使用与图形属性不同的名称的一种方式。

这定义了一个关系到一个类的类型PersonEntity和关系类型ACTED_IN

这是您的应用程序代码要使用的构造函数。

作为一般评论:使用内部生成的 id 的不可变实体有点矛盾,因为 SDN 需要一种方法来使用数据库生成的值设置字段。

如果您找不到好的业务密钥或不想使用生成器生成 ID,这里是使用内部生成的 id 以及常规构造函数和所谓的wither -Method 的同一实体,SDN 使用该方法:

清单 8. MovieEntity.java

import org.springframework.data.neo4j.core.schema.GeneratedValue;
import org.springframework.data.neo4j.core.schema.Id;
import org.springframework.data.neo4j.core.schema.Node;
import org.springframework.data.neo4j.core.schema.Property;import org.springframework.data.annotation.PersistenceConstructor;@Node("Movie")
public class MovieEntity {@Id @GeneratedValueprivate Long id;private final String title;@Property("tagline")private final String description;public MovieEntity(String title, String description) { this.id = null;this.title = title;this.description = description;}public MovieEntity withId(Long id) { if (this.id.equals(id)) {return this;} else {MovieEntity newObject = new MovieEntity(this.title, this.description);newObject.id = id;return newObject;}}
}

Spring认证-Spring Data Neo4j教程一

这是您的应用程序代码要使用的构造函数。它将 id 设置为 null,因为不应操纵包含内部 id 的字段。

这就是所谓的-属性凋零id。它创建一个新实体并相应地设置字段,而不修改原始实体,从而使其不可变。

您当然可以将 SDN 与Kotlin一起使用,并使用 Kotlin 的数据类对您的域进行建模。 如果您想或需要纯粹地留在 Java 中,Project Lombok是一个替代方案。

5.5.2.声明 Spring Data 存储库

您在这里基本上有两个选择:您可以使用 SDN 以与商店无关的方式工作,并使您的域特定扩展之一

  • org.springframework.data.repository.Repository
  • org.springframework.data.repository.CrudRepository
  • org.springframework.data.repository.reactive.ReactiveCrudRepository
  • org.springframework.data.repository.reactive.ReactiveSortingRepository

相应地选择命令式和反应式。

虽然技术上不禁止,但不建议在同一个应用程序中混合命令式和反应式数据库访问。我们不会在这种情况下为您提供支持。

另一种选择是选择特定于商店的实现并获得我们开箱即用的所有方法。这种方法的优点也是它最大的缺点:一旦出来,所有这些方法都将成为您 API 的一部分。大多数时候,拿走东西比事后添加东西更难。此外,使用商店细节会将您的商店泄漏到您的域中。从性能的角度来看,没有惩罚。

适合上述任何电影实体的反应式存储库如下所示:

清单 9. MovieRepository.java

import reactor.core.publisher.Mono;import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository;public interface MovieRepository extends ReactiveNeo4jRepository<MovieEntity, String> {Mono<MovieEntity> findOneByTitle(String title);
}

测试响应式代码是使用
reactor.test.StepVerifier. 查看Project Reactor的相应文档或查看我们的示例代码。


http://chatgpt.dhexx.cn/article/QGciLZxu.shtml

相关文章

SpringBoot 整合 Neo4j

1、创建测试类2、集成 SpringBoot 阅读此文之前&#xff0c;必须对 Neo4j 有个初步的了解&#xff0c;如果要实际操作的话&#xff0c;需要自备一个 Neo4j 数据库 本文所涉及代码已开源至 Gitee https://gitee.com/Array_Xiang/spring-boot-neo4j 创建一个 SpringBoot 项目&…

【Neo4j教程之CQL函数基本使用】

&#x1f680; Neo4j &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;C…

Neo4j资料 Neo4j教程 Neo4j视频教程 Neo4j 图数据库视频教程

课程发布地址 地址&#xff1a; 腾讯课堂《Neo4j 图数据库视频教程》 https://ke.qq.com/course/327374?tuin442d3e14 作者 庞国明&#xff0c;《Neo4j权威指南》副主编、《Neo4j 3.x 入门经典》翻译 邮箱&#xff1a;pangguomingyeah.netQQ:1143815700Neo4j技术讨论QQ群&…

Neo4J超详细专题教程,快来收藏起来吧

Neo4J超详细教程 Lecture&#xff1a;波哥 一、Neo4J相关介绍 1.为什么需要图数据库 随着社交、电商、金融、零售、物联网等行业的快速发展&#xff0c;现实社会织起了了一张庞大而复杂的关系 网&#xff0c;传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随…

Neo4j教程 Neo4j视频教程 Neo4j 图数据库视频教程

课程发布地址 地址&#xff1a; 腾讯课堂《Neo4j 图数据库视频教程》 https://ke.qq.com/course/327374?tuin442d3e14 作者 庞国明&#xff0c;《Neo4j权威指南》副主编、《Neo4j 3.x 入门经典》翻译 邮箱&#xff1a;pangguomingyeah.netQQ:1143815700Neo4j技术讨论QQ群&…

neo4j教程-安装部署

neo4j教程-安装部署 Neo4j的关键概念和特点 •Neo4j是一个开源的NoSQL图形存储数据库&#xff0c;可为应用程序提供支持ACID的后端。Neo4j的开发始于2003年&#xff0c;自2007年转变为开源图形数据库模型。程序员使用的是路由器和关系的灵活网络结构&#xff0c;而不是静态表…

Neo4j安装教程

1.下载社区版本&#xff0c;java8推荐安装3.*的版本 Neo4j Download Center - Neo4j Graph Data Platformhttps://neo4j.com/download-center/#community 点击下载即可。 2.配置 启动 将提取的文件放在服务器上的永久主页中&#xff0c;例如 D:\neo4j\. 顶级目录称为 NEO4J_…

Neo4j详细介绍及使用教程

文章目录 一、Neo4j介绍1.Neo4j简介2.图数据库简介3.Neo4j的优缺点4.Neo4j的常见应用场景二、使用教程1.下载安装2.数据插入和查询(1)基本概念(2)基本语法Ⅰ.CREATE操作——创建Ⅱ.MERGE——创建或更新Ⅲ.Match操作——查找指定的图数据Ⅳ.DELETE操作——删除节点3.JAVA实战 一…

Neo4j语法教程

neo4j简版教程 create (<node-name:<label-name2>:<label-name2>......>) return <node-name> 可以给一个节点创建多label的node eg: CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" }) Neo4j CQL创…

【数据库】linux安装neo4j教程(neo4j 4.x)

一.配置jdk neo4j 4.x版本依赖jdk11&#xff0c;需要安装jdk11才能正常启动&#xff08;安装高版本或低版本jdk都不行&#xff09; 1&#xff09;执行uname -a看下系统架构 2&#xff09;根据系统架构下载对应安装包 https://www.oracle.com/java/technologies/javase/jdk11…

linux neo4j 教程,Neo4j 入门教程 - 安装

本篇来简单介绍下如何下载并安装 Neo4j&#xff0c;篇目很短&#xff0c;因为真的很简单。 下载 Neo4j 首先在 https://neo4j.com/download/ 下载 Neo4j。你可以选择企业体验版或者免费的社区版&#xff0c;这里我是用的社区版。点击 Download 按钮即可开始下载。 网站会自动下…

使用Docker安装neo4j教程

拉取镜像源 docker pull neo4j(:版本号) //缺省 “:版本号” 时默认安装latest版本的查看本地镜像 docker images启动容器 docker run -d --name container_name -p 7474:7474 -p 7687:7687 -v /home/neo4j/data:/data -v /home/neo4j/logs:/logs -v /home/neo4j/conf:/var…

neo4j教程 java_neo4j 教程

Neo4j是一个世界领先的开源图形数据库。 它是由Neo技术使用Java语言完全开发的。本教程将教你Neo4j的基础知识&#xff0c;Java与Neo4j和Spring DATA与Neo4j。 本教程分为Neo4j简介&#xff0c;Neo4j CQL&#xff0c;Neo4j CQL函数&#xff0c;Neo4j管理员&#xff0c;Neo4j与J…

最详细的Neo4J解读(附安装教程)

文章目录 一、Neo4j简介二、Neo4j - 特点和优势1.Neo4j的特点2.Neo4j的优点3.Neo4j的缺点或限制 三、Neo4j - 数据模型四、Neo4j安装及配置1.安装Java JDK2.下载安装Neo4j3.创建系统环境变量4.Neo4j的启动和停止5.切换数据库 五、Neo4j的CQL操作 一、Neo4j简介 Neo4j是一种流行…

图数据库Neo4j实战(全网最详细教程)

1.图数据库Neo4j介绍 1.1 什么是图数据库&#xff08;graph database&#xff09; 随着社交、电商、金融、零售、物联网等行业的快速发展&#xff0c;现实社会织起了了一张庞大而复杂的关系网&#xff0c;传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数…

neo4j入门

目录 一、安装 二、CQL使用 三、Springboot(2.4以上版本)整合neo4j 四、使用过程中的问题 1、自定义查询&#xff0c;cql无法接收变量 2、使用依赖去操作neo4j只有return才会执行 3、neo4j和mysql事务冲突 补充 一、安装 1、首先要配置jdk&#xff0c;默认电脑中有jdk…

Neo4j 安装、使用教程

文章目录 一、Neo4j 的安装与配置1、安装JDK2、安装Neo4j3、Neo4j环境变量配置4、启动服务器 二、Neo4j 使用教程 一、Neo4j 的安装与配置 1、安装JDK 由于Neo4j是基于Java的图形数据库&#xff0c;运行Neo4j需要启动JVM进程&#xff0c;因此必须安装JAVA SE的JDK。配置 JDK环…

neo4j新手教程

neo4j新手教程 本文通过一个实际的案例来一步一步使用Cypher来操作Neo4j。 这个案例的节点主要包括专业和课程两类&#xff0c;课程和课程之间有前置、并列等关系&#xff0c;专业和课程之间有包含等关系。 1、&#xff08;可选&#xff09;首先&#xff0c;我们删除数据库中…

微信开发者工具元素快速定位审查元素

一般浏览器里鼠标在元素上右键点击审查元素或检查元素即可快速打开开发者工具并定位到该元素&#xff0c;但在微信开发者工具中不支持&#xff0c; 解决方法 点击 elements左边的 小鼠标 图片&#xff0c;然后在主页面点击元素即可快速定位

代码审查规范(试用版)

目录 1、背景 2、目标 3、流程 4、指定代码审查规范 4.1、命名风格 4.2、常量定义 4.3、代码风格 4.4、注释风格 4.5、控制语句 5、执行代码审查规范 6、开展PR Bash活动 1、背景 2019年已成历史&#xff0c;2020年已经悄然到来。2019年&#xff0c;我们的研发团队经…