Spring Boot整合Neo4j

【Springboot集成Neo4j完整版教程】 【Springboot集成Neo4j完整版教程】本文展示了如何使用Neo4J和Spring Boot整合,如何在Spring Boot应用程序中使用Neo4J数据库来持久化数据、使用CQL语言进行高效的查询操作,并提供了一个非常简单的例子以演示如何使用Neo4J数据库。相信通过本文的学习,读者已经掌握了如何使用Neo4J和Spring Boot整合,并且具备将此应用于实际项目的能力。 阅读详情

Neo4j

简介

Neo4j是一个世界领先的开源图形数据库。 它是由Neo技术使用Java语言完全开发的。本教程将教你Neo4j的基础知识,Java与Neo4j和Spring DATA与Neo4j。 Neo4j是一个高性能的,NOSQL数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事物特性的java持久化引擎。Neo4j也可以看作是一个高性能的图引擎,该引擎具有成熟数据库所有特性。
在属性图中,图由顶点(节点),边(关系),属性组成,每个顶点和边都可以有一个或多个属性,Neo4j创建的图是用顶点和边构建的有向图。
官方网站:http://www.neo4j.org

示例图如下:
在这里插入图片描述

下载安装

去官方网站下载对应的版本,本人使用centos7

[root@zookeeper neo4j]# wget https://neo4j.com/artifact.php?name=neo4j-community-3.4.9-unix.tar.gz
--2020-06-27 09:30:30--  https://neo4j.com/artifact.php?name=neo4j-community-3.4.9-unix.tar.gz
正在解析主机 neo4j.com (neo4j.com)... 54.156.129.200, 3.222.79.195
正在连接 neo4j.com (neo4j.com)|54.156.129.200|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:91186069 (87M) [application/x-gzip]
正在保存至: “artifact.php?name=neo4j-community-3.4.9-unix.tar.gz”

100%[=======================================================================================>] 91,186,069   575KB/s 用时 2m 37s 

2020-06-27 09:33:24 (569 KB/s) - 已保存 “artifact.php?name=neo4j-community-3.4.9-unix.tar.gz” [91186069/91186069])

下载成功后进行解压操作,解压后修改安装目录下的neo4j.conf文件:
因为需要远程登录,所以只是调整了里面的一行,将注释放开:

dbms.connectors.default_listen_address=0.0.0.0

修改防火墙设置,开放端口并重启防火墙服务:
在这里插入图片描述

验证

在浏览器中输入:http://ip:7474/browser/,如果出现下图则证明安装成功,按照提示修改新密码,进行一些必要操作,也可以参照菜鸟教程进行简单练习:

在这里插入图片描述

Spring Boot整合Neo4j

源码地址

导入依赖修改配置

pom.xml

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-neo4j</artifactId>
            <version>2.3.1.RELEASE</version>
        </dependency>

application.properties

# 配置neo4j相关信息
spring.data.neo4j.uri=bolt://192.168.1.106:7687
spring.data.neo4j.username=neo4j
spring.data.neo4j.password=wangfeng

开发配置类

Neo4jConfig.java用以加载驱动以及配置连接到neo4j的各种信息,以及指定repository。

@Configuration
@EnableTransactionManagement
@EnableNeo4jRepositories(basePackages = "com.neo4jdemo.springbootneo4j.repository")
public class Neo4jConfig {
    @Value("${spring.data.neo4j.uri}")
    private String url;

    @Value("${spring.data.neo4j.username}")
    private String username;

    @Value("${spring.data.neo4j.password}")
    private String password;

    @Bean(name = "session")
    public Session neo4jSession() {
        Driver driver = GraphDatabase.driver(url, AuthTokens.basic(username, password));
        return driver.session();
    }

}

开发实体以及关系类

ParentNode.java 需要在类中指定对应的Node,以及关系

@NodeEntity("ParentNode")
public class ParentNode {

    @Id
    @GeneratedValue
    private Long id;
    private  @Property(name = "name") String name;

    private @Relationship(type = "Relations")
    Set<RelationNode> sets = new HashSet<>();
   //get set toString 构造器等
    //添加关系
     public void addRelation(SonNode sonNode, String name) {
        RelationNode relationNode = new RelationNode(this, name, sonNode);
        sets.add(relationNode);
        sonNode.getSets().add(relationNode);
    }
}

SonNode.java

@NodeEntity("SonNode")
public class SonNode {
    @Id
    @GeneratedValue
    private Long id;

    @Property(name = "name")
    private String name;

    private @Relationship(type = "RelationEdge", direction = "INCOMING")
    Set<RelationNode> sets = new HashSet<>();

     //get set toString 构造器等
 }

RelationNode.java 需要指定关系名,关系箭头指向

@RelationshipEntity(type = "Relations")
public class RelationNode {
    @Id
    @GeneratedValue
    private Long id;
    // 关系名
    private String name;
    private @StartNode
    ParentNode parentNode;
    private @EndNode
    SonNode sonNode;
    
  //get set toString 构造器等
}

Neo4jParentRepository

Neo4jParentRepository.java继承自Neo4jRepository,实现简单的crud操作

public interface Neo4jParentRepository extends Neo4jRepository<ParentNode,Long> {
}

测试验证接口开发

Neo4jController.java

@RestController
@RequestMapping("/neo4j")
public class Neo4jController {

    @Autowired
    private Neo4jParentRepository neo4jParentRepository;

    @GetMapping("/create")
    public void create(){
        SonNode sonNode1 = new SonNode("儿子小峰");
        SonNode sonNode2 = new SonNode("女儿小丽");

        ParentNode parentNode = new ParentNode("爸爸");

        parentNode.addRelation(sonNode2, "女儿");
        parentNode.addRelation(sonNode1, "儿子");

        neo4jParentRepository.save(parentNode);
    }


    @GetMapping(value = "/query")
    public void findNodes() {
        Iterable<ParentNode> parentNodes = neo4jParentRepository.findAll();
        for (ParentNode parentNode : parentNodes) {
            Set<RelationNode> relationNodeSet = parentNode.getSets();
            for (RelationNode relationNode : relationNodeSet) {
                System.out.println("id:" + parentNode.getId() + " name:" + parentNode.getName() + " 关系:" + relationNode.getName() + "子节点:" + relationNode.getSonNode().getName());
            }
        }
    }

}

使用启动类开启项目,然后使用postman对接口create和query分别进行访问,项目没有报错的情况下,可以直接登录图数据库的可视化界面去查看,能看到关系已经生成。
在这里插入图片描述

Neo4j实战避坑:Spring Boot整合时遇到的3个‘诡异’问题及解决方案(事务冲突、查询不执行) 本文深入探讨了Spring Boot整合Neo4j时常见的三个棘手问题:自定义@Query查询参数消失、响应式编程的惰性陷阱以及事务管理器的冲突。通过详细分析问题根源并提供已验证的解决方案,帮助开发者高效避坑,提升Neo4j在Spring Boot项目中的集成效率。特别针对事务冲突和查询不执行等问题,给出了实用配置建议和性能优化技巧。 阅读详情

相关推荐

Java开发者必看:Neo4j 4.4与Spring Boot实战整合指南(附完整Demo)

本文为Java开发者提供了Neo4j 4.4与Spring Boot的实战整合指南。文章详细介绍了从环境准备、项目初始化到核心实体映射、复杂Cypher查询以及事务管理与性能优化的完整流程,并附有完整的Demo项目。重点讲解了如何利用Spring Data Neo4j高效操作图数据库,帮助开发者快速构建处理复杂关系数据的企业级应用。

weixin_29284885的博客 244

Springboot集成Neo4j

Neo4j:图数据库是以图结构的形式存储数据的数据库。 它以节点,关系和属性的形式存储应用程序的数据。 正如RDBMS以表的“行,列”的形式存储数据,GDBMS以图的形式存储数据。

喝醉的咕咕鸟 1万+

Springboot项目连接neo4j数据库

首先创建一个springboot项目,这里不再介绍。然后按照以下步骤进行springboot连接neo4j数据库。

WwLK123的博客 2223

Spring Boot整合neo4j

Spring Boot整合neo4j

weixin_43618754的博客 5807

毕设项目:基于springboot+neo4j的医疗系统知识图谱问答.zip

本资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用。有任何问题也可以随时私信博主,博主会第一时间给您解答!!! 本资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用。有任何问题也可以随时私信博主,博主会第一时间给您解答!!! 本资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够满足学习、使用需求,如果有需要的话可以放心下载使用。有任何问题也可以随时私信博主,博主会第一时间给您解答!!!

抖音视频数据抓取

最近经常有人问我抓取抖音视频的数据,问我一些很小白的问题,算法给他也不会用。 还是先抓包,获取需要的接口和参数,相关的算法在其它文章里面有描述。 搜索个视频看看 查看抓的包信息: 可以看到,这里是post请求...

2501_91048859的博客 3097

【SpringBoot+Neo4j+MySQL+Mybatis-Plus集成和操作实现】

SpringBoot+Neo4j+MySQL集成和操作实现 neo4j数据库安装、SpringBoot整合、常规CRUD、自定义分页查询、集成Mybatis-Plus、事务处理。 目录: 本文主要分为如下几个章节进行集成操作示例和填坑说明。 1、 数据库依赖引入和配置 2、 数据库节点CRUD操作 3、 自定义分页实现 4、 集成MySQL 5、多数据源事务处理 数据库依赖引入和配置 neo4j数据库的使用需要注意JDK的版本,3.*版本jdk要求为8,4.*版本jdk要求为11

qq_26375455的博客 1万+

INCA软件操作指南:手把手教你生成和解析DCM标定数据文件

本文详细介绍了INCA软件在汽车ECU开发中生成和解析DCM标定数据文件的全流程。从A2L文件导入到DCM文件生成,再到HEX文件导出,手把手教你掌握标定数据处理的实用技巧,包括参数标定、曲线标定和常见问题排查,帮助工程师提升工作效率。

weixin_29271053的博客 1052

Spring Boot 整合 Neo4j

Neo4j 是一个高性能的 ​​,适用于存储和查询 ​​ 和 ​​ 的数据。本教程将带你从零开始,在 ​​ 项目中整合 ​​,并实现基本的 ​​ 操作。

weixin_52578852的博客 1872

告别瞎猜!用通达信/同花顺这些资金流向函数,一眼看穿主力动向(附实战公式)

本文详细解析了通达信/同花顺资金流向函数的实战应用,帮助投资者精准识别主力动向。通过12个核心资金函数的组合逻辑,构建主力行为监控体系,避免未来函数陷阱,识别主力对倒行为,并提前捕捉异动。适合股票投资者提升自选股分析能力。

weixin_42522964的博客 1189

Win10平台下QT6.9.0 OpenCV 4.10.0从入门到精通

我最近开发一个视觉项目,我们从0开始记录在windows 10下 用QT6.9+OpenCV 4.10.0搞定整个项目的开发过程。以抛砖引玉,大家共同进步。

fds111111的博客 1712

Spring Boot整合Neo4j实战

关于Spring Boot整合Neo4j的介绍很多,但自己上手参考的时候,仍然有些东西云里雾里有点晕。慢慢才摸出正道。 聊记,分享。 一、各组件直接的搭档配合和版本密切相关。版本不合适,配合不上。 我是用的版本搭档是: Noe4j 3.5.8 spring data Noe4j 5.1.3.RELEASE (主要包括OGM SUpport、 Spring ...

1935

uniapp 记录运动轨迹 开发_智能手环穿戴设备APP开发解决方案

智能手环是一种穿戴式智能设备,是目前备受关注的科技产品。目前智能手环具有的功能有记录日常生活中的运动数据、移动轨迹,定位等,有些还可以进行睡眠质量的检测,并将这些数据传送至移动端如手机、平板等,可对数据进行分析,指导健康生活的作用。而智能手环开发方案就是将这些功能实现,将算法烧录到主控板上。智能手环都有哪些功能  1、记录运动数据  对于喜欢健身的用户来说,智能手环记录的运动数据功能...

weixin_39678493的博客 1764

Spring Boot 整合Neo4j笔记一

笔记主要记录如何使用Spring Boot Neo4j访问Neo4j数据库以及在实验过程中遇到的问题及解决方案。 开发环境:Myeclipes+spring boot+neo4j 安装neo4j数据库 在Maven项目添加spring-data-neo4j和相关依赖 编写domain对象 继承Neo4jRepository接口 实现service 在Controller中访问 运行截图 总结 整体...

cqn9012的博客 2773

Python 爬虫实战:拼多多商品评论情感分析(含词云生成与差评预警)

在电商行业竞争日益激烈的当下,商家对商品评论的分析需求愈发迫切。通过 Python 爬虫收集拼多多商品评论,并结合情感分析、词云可视化及差评预警技术,商家可精准洞察消费者反馈,优化商品与服务。本文将深度剖析从爬虫搭建到数据挖掘的关键环节,助力读者构建全流程电商评论分析系统。

yansideyucsdn的博客 1450

MIKE水动力笔记2_水动力基础理论知识

本文所讲内容是水动力基础理论知识,所参考的主要书籍是《水动力学和水质》(第二版,季振刚著,海洋出版社)。

晏长街的博客 1万+

Neo4j图数据库入门与Spring Boot整合案例

Neo4j是一个开源的NoSQL数据库,使用scala和Java开发。是世界上最先进的图数据库之一,提供原生的图数据存储、检索、处理采用属性图模型,极大的完善和丰富图数据模型专属查询语言Cypher,直观、高效。

Huathy的博客 1233

微信小程序 - 详细实现随机生成订单号,微信小程序创建订单号思路,不重复订单号生成的方法,小程序自动生成固定规则的订单号流水号(必须是唯一不重复的订单号,生成唯一订单号)详细生成方法,示例代码教程最新

微信小程序,vue2,vue3,订单号,流水号思路,微信小程序 详细实现随机生成订单号(JavaScript),随机生成商户订单号,根据当前时间随机生成流水号或者订单号,微信小程序之商家订单,订单号随机生成器,自动生成固定规则的订单号(前缀+采购日期+6位流水号)微信小程序 生成外卖顺序号,生成订单号或流水号简单方法,实现订单号生成唯一的解决方案,如何按日期生成订单号,14位编号=8位日期(+6位流水号),自动生成订单号(固定+日期+数字),销售订单号自动生成。在微信小程序开发中,详解实现随机生成创建订单号

🏆 前端领域优质创作者 1185

Neo4j与Spring Boot深度整合:从零搭建企业级图服务

图数据库(Graph Database)是一种以图结构为基础来存储数据的数据库。与传统的关系型数据库使用表格结构来存储数据不同,图数据库的核心思想是利用节点(Node)、关系(Relationship)以及属性(Property)来表达复杂的数据结构。节点(Node):表示数据中的实体,类似于关系数据库中的表。关系(Relationship):节点之间的联系,用于表示实体间的关系。属性(Property):用于描述节点和关系的特征。Neo4j是一个开源的图数据库,它基于一个称为图形处理引擎的原理。

一碗黄焖鸡三碗米饭的博客 1019

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java-173 Neo4j + Spring Boot 实战:从 Driver 到 Repository 的整合与踩坑

Neo4j 与 Spring Boot 的整合路径,覆盖 Spring Data Neo4j 6 的分层架构(Neo4j Java Driver、Neo4jClient、Neo4jTemplate、Repository、MappingContext)、实体与关系映射要点,以及在工程化落地中的依赖配套与事务实践。结合 Spring Boot 2.4+ 到 3.x 的版本演进,给出 Neo4j 4.x/5.x 的兼容建议与避免混搭 neo4j-ogm 的风险提示,并总结 @Query 参数写法、@Id/@Gen

谢谢你的喜欢 我们一起无限进步 1525

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Spring Boot:Boot2.0版本整合Neo4j

前面介绍了Boot 1.5版本集成Neo4j,Boot 2.0以上版本Neo4j变化较大。 场景还是电影人员关系 Boot 2.0主要变化 GraphRepository在Boot2.0下不支持了,调整为Neo4jRepository。 对应的findById和deleteById也要调整。 @GraphId也不支持需要改成@Id @GeneratedValu...

WGH100817的博客 309

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Spring boot 整合Neo4j 实现动态Cypher

提到spring boot整合Neo4j,一般都会提到spring-data-neo4j,使用类似于jpa的方式,使用entity去maintain,但是如果想要添加动态关系或者动态的node,就算是@Query也是不够用了 使用OGM 其实这个包也被spring-data-neo4j引入了,所以不必要单独引入 import org.neo4j.ogm.session.Session; import org.neo4j.ogm.session.SessionFactory; import org.s.

Damien_J_Scott的博客 3901

Spring Boot 整合 Neo4j 图数据库实战:从环境搭建到欺诈检测系统落地

传统关系型数据库处理"用户-账户-设备-IP"多层关联关系时,三层 JOIN 就开始性能断崖式下跌,欺诈团伙识别更是无从下手。本文基于 Spring Boot 3.4 + Neo4j 5.x,从 Docker 环境搭建、节点与关系建模、Spring Data Neo4j Repository、Cypher 图查询语言、性能调优到生产踩坑,完整落地一个金融欺诈检测系统,覆盖团伙识别、环路检测、风险评分全链路。

腾讯云创作之星、华为云云享专家,深耕电商全栈高并发系统实战,分享可商用商城项目源码。 592

springboot整合neo4j

从官网下载neo4j-community-3.5.33-unix.tar.gz3.5版本支持jdk1.8,新版本需要jdk11修改neo4j.conf文件找到里面将注解都打开,换成0.0.0.0,重启,就可以通过ip连接了。

没啥简介 1965

SpringBoot整合Neo4j简单操作

SpringBoot整合Neo4j简单操作。

qq_43430966的博客 2203
上一篇: Spring Boot整合Redisson
下一篇: Spring Boot整合阿里云存储OSS
CodersCoder
博客等级 码龄10年 90粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值