Neo4j+Spring data 开发关系网络案例

Neo4J环境搭建

一、      安装Neo4J数据库

1)        下载neo4j :https://neo4j.com/download/?ref=home     开发请下载社区版,生产部署下载企业版。

2)        安装

a)        Windows系统安装

i.             与一般软件安装方式一样,在启动时,需要选择数据库的目录,请根据自身需要选择

Clipboard Image.png

ii.             启动完成后,打开浏览器访问web控制台:http://localhost:7474

默认用户名和密码均为:neo4j

b)       Linux系统安装

i.             下载tar压缩包,解压到安装目录

ii.             执行命令$NEO4J_HOME/bin/neo4j console

iii.             打开浏览器访问web控制台:http://localhost:7474

iv.             默认用户名和密码均为:neo4j

二、      Neo4J与Spring Data集成开发

1)        新建spring项目,pom.xml文件中加入所需依赖

Clipboard Image.png

2)        新建Neo4jConfig.java配置类

用于配置neo4j的SessionFactory,事物管理器,数据库连接相关

Clipboard Image.png

Neo4j.properties文件内容:

neo4j.ogm.driver = org.neo4j.ogm.drivers.http.driver.HttpDriver
neo4j.ogm.URI = http://neo4j_dev:qaz123@localhost:7474

Neo4j支持多种协议调用,此处我们使用http 协议

注:由于spring-data-neo4j版本更迭较快,每个版本的配置会略有不同,具体配置方法请参考spring-data 官方github主页,本示例使用的是spring的最新版本:

https://github.com/spring-projects/spring-data-neo4j/tree/master

三、     用户、公司、手机设备关系开发示例

业务背景:

    一个用户属于一家公司,一个用户可拥有多个设备,多个用户可同时属于一家公司,下面的示例是我们在spring data +neo4j环境及下开发出这样的一个业务关系模型。

1)        创建实体文件

每个实体必须有主键id,为Long类型,必须加上@GraphId注解用于标识Node节点的Id

关系结构使用@Relationship注解,type自定义,用于标识是何种关系类型,direction用于定义本节点在这个关系中是处于哪一方,默认是OUTGOING

在此业务场景下,我们需要建立三个角色型的实体(用户,公司,设备),三个关系型实体(用户到公司,公司到用户,用户到设备)

实体中所用到的注解说明:

@NodeEntity : 节点实体注解

@GraphId:实体ID 字段

@Index:添加索引的字段

@Relationship(type= “XXX”) :关系注解,type自定义,需跟关系实体中的type一致

a)        User实体文件

Clipboard Image.png

b)       Company实体

Clipboard Image.png

c)        Device实体

Clipboard Image.png

d)       关系类型实体

关系型实体注解说明

@RelationshipEntity(type = “XXX”) :标识位关系实体

@StartNode :关系的开始节点

@EndNode :关系的结束节点

User2Company

Clipboard Image.png

User2Device

Clipboard Image.png

Compayn2User

Clipboard Image.png

2)        新建repository接口,功能类似于dao文件,用于和neo4j数据库进行交互

可直接继承Neo4jRepository<T>或PagingAndSortingRepository<T,Long>,前者是无分页的操作接口,后者是可以进行分页和排序操作的接口,用户也可在自己的接口中自定义扩展

例如:

Clipboard Image.png

3)        创建Service组件

根据分层结构设计原则,我们还需要一个service层,用于封装业务操作逻辑

这里是列出User的Service实现,其他Service基本相同。

Clipboard Image.png

实现类

Clipboard Image.png

4)        编写单元测试

Clipboard Image.png

Clipboard Image.png

至此,我们已经创建一个简单的公司与用户,用户与设备之间的关系的图谱,在浏览器UI界面可以看到我们创建的关系图谱结果

Clipboard Image.png

四、      CQL语言

上面的自定义查询中使用到了Neo4J专用的查询语言,称之为CQL,其语法类似于Sql语言。

如需了解更多,请移步:http://www.w3cschool.cn/neo4j/neo4j_cql_introduction.html

转载于:https://my.oschina.net/u/2538940/blog/3025331

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值