【springboot应用】Spring Boot 3.3 + Neo4j:轻松实现图数据库操作的完全指南

news/2024/11/14 9:32:30/文章来源:https://www.cnblogs.com/o-O-oO/p/18542842

简介:Neo4j 和 Spring Boot 集成

Neo4j 是一种开源的 NoSQL 图数据库,专为处理关联性强的大数据而设计。传统的关系型数据库(RDBMS)不擅长处理大量的关系数据,而 Neo4j 则通过基于图的模型使这些关系处理得更高效、直观。Spring Boot 提供了很多与 Neo4j 集成的便捷工具,如 spring-boot-starter-data-neo4j 启动器。

连接到 Neo4j 数据库

在 Spring Boot 中,可以通过自动配置的 org.neo4j.driver.Driver 访问 Neo4j 数据库。默认情况下,驱动会尝试连接到 localhost:7687 上使用 Bolt 协议的 Neo4j 服务器。

以下代码展示了如何注入 Neo4j 的 Driver 并创建一个节点:


import org.neo4j.driver.Driver;
import org.neo4j.driver.Session;
import org.neo4j.driver.Values;
import org.springframework.stereotype.Component;@Component
public class MyBean {private final Driver driver;public MyBean(Driver driver) {this.driver = driver;}public String someMethod(String message) {try (Session session = this.driver.session()) {return session.executeWrite((transaction) -> transaction.run("CREATE (a:Greeting) SET a.message = $message RETURN a.message + ', from node ' + id(a)",Values.parameters("message", message)).single().get(0).asString());}}
}

配置 Neo4j 连接参数

你可以通过 spring.neo4j.* 属性配置连接参数,如 URI 和认证信息:

application.properties:spring.neo4j.uri=bolt://my-server:7687
spring.neo4j.authentication.username=neo4j
spring.neo4j.authentication.password=secret

可以通过 ConfigBuilderCustomizer 来细化 Driver 的配置。

Spring Data Neo4j Repositories

Spring Data Neo4j 提供了强大的仓库支持。通过 Neo4jRepository,你可以像操作关系型数据库一样操作图数据库。

以下是定义 City 节点实体及其仓库的示例:

import java.util.Optional;
import org.springframework.data.neo4j.repository.Neo4jRepository;public interface CityRepository extends Neo4jRepository<City, Long> {Optional<City> findOneByNameAndState(String name, String state);
}

通过使用 spring-boot-starter-data-neo4j 启动器,自动配置了仓库支持和事务管理。Spring Boot 还支持经典的和响应式的 Neo4j 仓库。通过 Neo4jTemplate 或 ReactiveNeo4jTemplate 实现数据访问。响应式模式自动配置支持 Project Reactor。

启用事务管理

在使用响应式模式时,ReactiveTransactionManager 需要手动配置:

import org.neo4j.driver.Driver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.neo4j.core.ReactiveDatabaseSelectionProvider;
import org.springframework.data.neo4j.core.transaction.ReactiveNeo4jTransactionManager;@Configuration(proxyBeanMethods = false)
public class MyNeo4jConfiguration {@Beanpublic ReactiveNeo4jTransactionManager reactiveTransactionManager(Driver driver,ReactiveDatabaseSelectionProvider databaseNameProvider) {return new ReactiveNeo4jTransactionManager(driver, databaseNameProvider);}
}

总结

Spring Boot 3.3 提供了丰富的 Neo4j 集成支持,简化了与图数据库的交互。无论是经典的数据库操作还是响应式操作模式,Spring Boot 都能为开发者提供自动配置和高效的数据访问支持。通过结合 Neo4j 的强大图数据建模能力和 Spring Boot 的开发便利性,企业级应用可以更高效地处理复杂的数据关系。

微信公众号:九极客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/832527.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于FCM模糊聚类算法的图像分割matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)I_mean = func_median(Im1,Lwin);%% 将图像灰度按列排列 X = Im1(:); X_spatial = I_mean(:);% 初始化标签数组 I_clu…

2024.11.12总结报告(一本“英语八年级上册”TEST4 A完形填空 难度:2)

今日份错误:基本介绍:本题为完形填空选择题,一共10题,错误2题 基本考点:本题考查重点为翻译和理解,难点为语法和词汇 错误题目:(7)(10) 分析:(7) 本小题的错误原因为语法,理解中出现错误,具体为动词的过去式与过去分词并未熟练掌握,上下文的联系不够紧密,对文…

Alpha冲刺阶段博客

数字电路模拟游戏团队 Alpha冲刺阶段博客 一、Scrum Meeting 第六周会议记录 第七周会议记录 二、测试报告 Alpha阶段测试报告 三、习得的软工原理/方法/技能? 1. 迭代开发与持续集成 采用迭代开发模式可以极大的提高开发效率,降低开发成本,迭代开发是一种增量式的软件开发方…

【shell脚本】了解一下shell中的主机变量和本地语系变量

简单介绍一下在 shell 脚本中的主机变量和本地语系变量。 版本和主机信息变量 shell 内置了一些变量,用于记录主机、硬件、操作系统等信息。这些变量如下:本地语系变量这些变量的优先级关系为:LC_ALL > LC_* > LANG ​原创 模糊的程序员

DVWA SQL注入union

数字型注入 1 and 1=1 1 and 1=2 返回数据不一样则有注入点且为数字型注入 //判断列数 ?id=and 1 order by 6 //返回正确 ?id=and 1 order by 7 //返回错误 得到列数为6 查数据库:1 and 1=2 union select 1,database() 字符型注入 and 1=1 and1=1 and 1=2 and1=1 ?id=…

痞子衡嵌入式:关于恩智浦SDK2.0里事务型中断处理函数(DriverIRQHandler)的重定向注意事项

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是SDK2.0里事务型中断处理函数(DriverIRQHandler)的重定向注意事项。最近有一个 i.MXRT 客户在使用官方 SDK 外设驱动里的中断处理函数时遇到了代码重定向失效问题,客户用得是一个 XIP Flash 工程,想把程序中…

基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现六

部分功能:课程信息业务逻辑层Service、课程分类信息业务逻辑层Service、课程订单信息业务逻辑层Service、课程小节信息业务逻辑层Service、课程评论信息业务逻辑层Service 技术点:SpringBoot+SpringDataJPA+Mysql+Freemaker+Bootstrap+JS+CSS+HTML一、前言介绍: 免费获取:猿…

基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现五

技术点:SpringBoot+SpringDataJPA+Mysql+Freemaker+Bootstrap+JS+CSS+HTML 部分功能:前台用户信息数据层Dao、公告信息数据层Dao、评论信息数据层Dao、常见问题信息数据层Dao、优惠卷信息数据层Dao、论坛信息数据层Dao、论坛回复信息数据层Dao、学习资料信息数据层Dao、充值记…

全局平衡二叉树 (GBST) 小记

全局平衡二叉树 (GBST) 小记 以下全局平衡二叉树简称 \(\text{GBST(Globel Balanced Search Tree)}\)。 我认识的大多数人,对 \(\text{GBST}\) 的理解基本上都是 静态 \(\text{LCT}\),或者静态 \(\text{Top Tree}\),不过我对 \(\text{LCT}\) 的理解可能还差一点,所以我不打…

考研打卡(15)

开局(15) 开始时间 2024-11-12 20:37:51 结束时间 2024-11-12 22:41:32现在在敷泥膜数据结构设已知一稀疏矩阵的三元组表为:(1,2,3),(1,6,1),(3,1,5),(3,2,-1) (5,4,5),(5,1,-3),则其转置矩阵的三元组表中的第三个三元组为____(山东大学2013年) A (2,…

25. 使用MySQL之使用触发器

1. 触发器 MySQL语句在需要时被执行,存储过程也是如此。但是,如果你想要某条语句(或某些语句)在事件发生时自动执行,怎么办呢?例如:每当增加一个顾客到某个数据库表时,都检查其电话号码格式是 否正确,州的缩写是否为大写;每当订购一个产品时,都从库存数量中减去订购…

Mysql表分区实操

创建分区表 create table user(id int(11) not null,name varchar(32) not null) partition by range(id) ( partition p0 values less than(10), partition p1 values less than(20), partition p2 values less than(30), partition p3 values less than maxvalue )分区表数据…