【java-Neo4j 5开发入门篇】-最新Java开发Neo4j

ops/2024/11/22 8:40:14/

系列文章目录


前言

上一篇文章讲解了Neo4j的基本使用,本篇文章对Java操作Neo4j进行入门级别的阐述,方便读者快速上手对Neo4j的开发。


一、开发环境与代码

1.docker 部署Neo4j

#这里使用docker部署Neo4j,需要镜像加速的需要自行配置
docker run --name neo4j -itd -p 7474:7474 -p 7687:7687 -v ./data:/data neo4j:5.25.1-community

二、开发代码

1.原生Java开发

  • 官方给出了Java开发Neo4j的官方教程地址:Neo4j-java官方文档
    在这里插入图片描述
  • Github的样例代码库地址:Github样例库地址
    在这里插入图片描述
    上述文档教程和代码样例可以快速帮你了解如何使用java对Neo4j进行操作。下面我们聊一下使用Springboot3框架对Neo4j的开发。

2.SpringBoot3开发

这里以我写的一个demo案例进行阐述,该demo主要帮大家入门,自定义方法需要自己研究或等我后面更新。。

  • 项目目录结构
    在这里插入图片描述
  • pom依赖
    jdk21,springboot3.3.5
java"><?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.5</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.develop</groupId><artifactId>neo4j-java</artifactId><version>0.0.1-SNAPSHOT</version><name>neo4j-java</name><description>neo4j-java</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>21</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--连接 neo4j,版本要对应数据库--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-neo4j</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
  • yml配置
java">spring:application:name: neo4j-javaneo4j:uri: bolt://localhost:7687authentication:username: neo4jpassword: 123456data:neo4j:database: neo4j
logging:level:org.neo4j.ogm.drivers.bolt.request.BoltRequest: DEBUGorg.neo4j.driver: INFO
  • 实体(节点)类
package com.develop.neo4jjava.domain;import lombok.Data;
import org.springframework.data.neo4j.core.schema.GeneratedValue;
import org.springframework.data.neo4j.core.schema.Id;
import org.springframework.data.neo4j.core.schema.Node;/*** @author wanChen* @ClassName Person* @Description:* @date 2024/11/18 17:23* @Version 1.0*/
@Node
@Data
public class Person {@Id@GeneratedValueprivate Long id;private String name;private int born;}
  • 继承工厂接口
package com.develop.neo4jjava.domain.repository;import com.develop.neo4jjava.domain.Person;
import org.springframework.data.neo4j.repository.Neo4jRepository;
import org.springframework.stereotype.Repository;import java.util.List;/*** @author wanChen* @ClassName PersonRepository* @Description:* @date 2024/11/18 17:24* @Version 1.0*/@Repository
public interface PersonRepository extends Neo4jRepository<Person, Long>{//自定义根据name查询List<Person> findByName(String name);//自定义修改方法,实现类需要先根据name查出数据(id)再进行修改Person updateByKey(String name);
}
  • 创建工具类
package com.develop.neo4jjava.utils;
import com.develop.neo4jjava.domain.Person;
import com.develop.neo4jjava.domain.repository.PersonRepository;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
/*** @author wanChen* @ClassName Neo4jUtil* @Description:* @date 2024/11/18 17:26* @Version 1.0*/@Component
public class Neo4jUtil {@Resourceprivate PersonRepository personRepository;public Person createPerson(Person person) {personRepository.updateByKey(person.getName());return personRepository.save(person);}public Iterable<Person> getAllPersons() {return personRepository.findAll();}public Person getPersonById(Long id) {return personRepository.findById(id).orElse(null);}public void deletePerson(Long id) {personRepository.deleteById(id);}}
  • 代码测试
package com.develop.neo4jjava;import com.develop.neo4jjava.domain.Person;
import com.develop.neo4jjava.utils.Neo4jUtil;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class Neo4jJavaApplicationTests {@Autowiredprivate Neo4jUtil neo4jUtil;@Testvoid addNode() {Person person = new Person();person.setBorn(2001);person.setName("张三");System.out.println(neo4jUtil.createPerson(person));}@Testvoid getAllNode(){System.out.println(neo4jUtil.getAllPersons());}@Testvoid deleteNode(){neo4jUtil.deletePerson(71L);}@Testvoid getNodeById(){System.out.println(neo4jUtil.getPersonById(1L));}
}

三、可视化

引用其他博主对可视化的收集:Neo4j可视化工具

四、总结

本文主要以代码demo的方式进行阐述,后续的工作主要是涉及基于Neo4j做一些知识图谱,并且结合ES做全文检索的应用场景。等设计方案过一段落后,会再和大家继续探究Neo4j的使用。


http://www.ppmy.cn/ops/135734.html

相关文章

云原生基础-云计算概览

目录 云计算的基本概念 云计算的服务模型 云计算的部署模式 云计算的基本概念 云计算是一种通过互联网提供计算资源和服务的模式。允许用户按需访问和使用各种计算资源&#xff0c;如服务器、存储、数据库、网络等&#xff0c;而无需了解底层基础设施的具体细节。云计算的核心理…

AI数字人视频小程序:引领未来互动新潮流

当下&#xff0c;随着人工智能技术的不断创新发展&#xff0c;各类AI系统已经成为了创新市场发展的重要力量&#xff0c;AI文案、AI数字人、AI视频等&#xff0c;为大众带来更加便捷的创作方式&#xff0c;AI成为了一个全新的风口&#xff0c;各种AI红利持续释放&#xff0c;市…

大数据新视界 -- 大数据大厂之 Impala 性能优化:集群资源动态分配的智慧(上)(23 / 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

优化算法|基于Deep-Q-Network(DQN)的邻域搜索算法求解分布式柔性作业车间调度问题

问题描述 分布式柔性作业车间调度&#xff08;Distributed FJSP&#xff0c;DFJSP&#xff09;主要包含工序序列、机器的选择和工厂的选择三个子问题。首先将&#x1d45b;个工件分配到不同的工厂当中&#xff0c;然后在每个工厂为工件选择可加工的机器以及确定工件的加工顺序…

鸿蒙NEXT开发案例:简体繁体转换器

【引言】 简体繁体转换器是一个实用的小工具&#xff0c;它可以帮助用户轻松地在简体中文和繁体中文之间进行转换。对于需要频繁处理两岸三地文档的用户来说&#xff0c;这样的工具无疑是提高工作效率的好帮手。本案例将展示如何利用鸿蒙NEXT提供的组件和服务&#xff0c;结合…

Stable Diffusion概要讲解

&#x1f33a;系列文章推荐&#x1f33a; 扩散模型系列文章正在持续的更新&#xff0c;更新节奏如下&#xff0c;先更新SD模型讲解&#xff0c;再更新相关的微调方法文章&#xff0c;敬请期待&#xff01;&#xff01;&#xff01;&#xff08;本文及其之前的文章均已更新&…

基于 RBF 神经网络整定的 PID 控制

基于 RBF 神经网络整定的 PID 控制 是结合了传统 PID 控制和 RBF&#xff08;径向基函数&#xff09;神经网络的自适应控制方法。在这种方法中&#xff0c;RBF 神经网络用于自适应地调整 PID 控制器的增益&#xff08;比例增益 KpK_pKp​&#xff0c;积分增益 KiK_iKi​ 和微分…

开源 AI 智能名片 2+1 链动模式商城小程序:场景驱动的商业创新与用户价值挖掘

摘要&#xff1a;本文围绕开源 AI 智能名片 21 链动模式商城小程序源码&#xff0c;深入分析了场景中的时间、空间、设备、社交和状态五大核心元素。阐述了各元素的表现形式、应用策略及价值&#xff0c;包括时间元素对业务周期和用户行为的影响及相应营销策略&#xff1b;空间…