Springboot 集成Neo4j完整版

前言

     小编最近的工作中遇到了一些知识图谱的工作,自然就用到了图数据库,这一NoSQL 数据库可以很好的展示节点之间的关联关系,对于一些图谱的关系操作是很好的选择哦~,下面来介绍下 Springboot 中如何集成Neo4J。

正文

Neo4j 概览 ( 这张图超喜欢)

在这里插入图片描述

NEO4J 学习

neo4j官网介绍
spring-data-neo4j官网介绍

Pom文件中引入依赖

     Spring生态中Spring-data部分不仅仅提供了Spring-data-jpa , 也提供了Spring-data-neo4j 支持spring和 neo4j的完美融合,pom.xml 文件中依赖如图:

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

yml文件中配置连接属性

spring:
  data:
    neo4j:
      uri: bolt://localhost:7687
      username: neo4j
      password: neo4j

建立NodeEntity

( 有点类似于Mysql中的table 映射的对象类,mysql中叫做ORM,neo4j中叫做OGM [object graph mapping])
【节点的标签实体】

@NodeEntity
@Builder
@Data
public class SupplyGraph {

    @Id
    @GeneratedValue
    private Long id;

    /**
     * 供应商名称
     */
    private String name;


}

【关系实体】

# 供应关系(公司节点和供应商节点节点是供应关系)
@Data
@Builder
@RelationshipEntity(type = "supply")
public class SupplyRelationship {
    @Id
    @GeneratedValue
    private Long id;

    private String indexName;
     
    //关系的一端节点是 公司节点
    @StartNode
    private CompanyGraph company;
   
   //关系的另一端节点是 供应商节点
    @EndNode
    private SupplyGraph supply;
   
   //下面是关系的属性
    /**
     * 采购占比
     */
    private String scale;

    /**
     * 采购金额
     */
    private String amount;
}

编写Repository

// 节点Repository
public interface SupplyGraphRepository extends Neo4jRepository<SupplyGraph,Long> {}
// 关系Repository
public interface SupplyRelationshipRepository extends Neo4jRepository<SupplyRelationship, Long> { }

编写Service

     实现功能: 添加公司节点到图数据库中,添加供应商节点到图数据库中,添加供应关系到图数据库中;

public void testSave(){
    ……
    //采购占比
   String scale = "47.14%";
   // 采购金额
   String amount =“18923.42” ;
   //供应商名称
   String name = "常州常电及其关联公司";
   //公司实体部分及添加公司节点部分省略...(companyGraph)
   SupplyGraph supplyGraph = SupplyGraph.builder().name(name).build();
   //添加供应商节点
    supplyGraphRepository.save(supplyGraph);
   String indexName = companyGraph.getFullName() + "-" + supplyGraph.getName();
   //供应商关系
   SupplyRelationship supplyRelationship =
                            SupplyRelationship.builder().company(companyGraph).supply(supplyGraph).amount(amount).scale(scale).indexName(indexName).build();
 //添加供应关系                          
 supplyRelationshipRepository.save(supplyRelationship);
 ……
}

运行程序,查看结果

     可以看到红框中有新增的两个实体和关系,执行成功!
在这里插入图片描述

疑问 & 讨论

     小编在生产环境用到了Neo4j 集群,在配置集群地址时大家都是怎么配置的呢? 欢迎大家下方留言共同探讨~
生效的方式(感觉neo4j cluster address 配置的怪怪的):

spring:
	data:
		neo4j:
		    # leader:ip1 follower:ip2 ,ip3
      		uri: bolt://ip1:7687
     	    uris: bolt://ip2:7687,bolt://ip3:7687
      		username: neo4j
            password:pro

失败的方式:

spring:
	data:
		neo4j:
		    # leader:ip1 follower:ip2 ,ip3
     	    uris: bolt://ip1:7687,bolt://ip2:7687,bolt://ip3:7687
      		username: neo4j
            password:pro

总结

     本次大概写了下我认为的比较简单的配置方式,在此之前小编还尝试了配置类的方式,比较繁琐这次就不做介绍了,感谢您的阅读~~

  • 10
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
Spring Boot中集成Neo4j需要进行以下步骤: 1. 添加依赖:在`pom.xml`文件中添加Neo4j的依赖。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-neo4j</artifactId> </dependency> ``` 2. 配置数据源:在`application.properties`文件中配置Neo4j的连接信息。 ```properties spring.data.neo4j.uri=bolt://localhost:7687 spring.data.neo4j.username=neo4j spring.data.neo4j.password=password ``` 3. 创建实体类:创建表示节点以及关系的实体类。 ```java @NodeEntity public class Person { @Id @GeneratedValue private Long id; private String name; // 省略getter和setter方法 } @RelationshipEntity(type = "FRIEND") public class Friendship { @Id @GeneratedValue private Long id; @StartNode private Person person1; @EndNode private Person person2; // 省略getter和setter方法 } ``` 4. 创建Repository:创建用于操作数据库的Repository接口。 ```java public interface PersonRepository extends Neo4jRepository<Person, Long> { // 自定义查询方法 } ``` 5. 使用Repository:在需要使用Neo4j的地方注入Repository,进行CRUD操作。 ```java @Service public class PersonService { private final PersonRepository personRepository; public PersonService(PersonRepository personRepository) { this.personRepository = personRepository; } public void savePerson(Person person) { personRepository.save(person); } // 其他操作方法 } ``` 这样就完成了Spring Boot与Neo4j集成。你可以根据需要自定义Repository的方法,也可以使用Spring Data Neo4j提供的方法进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的大白啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值