Neo4J环境搭建
一、 安装Neo4J数据库
1) 下载neo4j :https://neo4j.com/download/?ref=home 开发请下载社区版,生产部署下载企业版。
2) 安装
a) Windows系统安装
i. 与一般软件安装方式一样,在启动时,需要选择数据库的目录,请根据自身需要选择
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文件中加入所需依赖
2) 新建Neo4jConfig.java配置类
用于配置neo4j的SessionFactory,事物管理器,数据库连接相关
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实体文件
b) Company实体
c) Device实体
d) 关系类型实体
关系型实体注解说明
@RelationshipEntity(type = “XXX”) :标识位关系实体
@StartNode :关系的开始节点
@EndNode :关系的结束节点
User2Company
User2Device
Compayn2User
2) 新建repository接口,功能类似于dao文件,用于和neo4j数据库进行交互
可直接继承Neo4jRepository<T>或PagingAndSortingRepository<T,Long>,前者是无分页的操作接口,后者是可以进行分页和排序操作的接口,用户也可在自己的接口中自定义扩展
例如:
3) 创建Service组件
根据分层结构设计原则,我们还需要一个service层,用于封装业务操作逻辑
这里是列出User的Service实现,其他Service基本相同。
实现类
4) 编写单元测试
至此,我们已经创建一个简单的公司与用户,用户与设备之间的关系的图谱,在浏览器UI界面可以看到我们创建的关系图谱结果
四、 CQL语言
上面的自定义查询中使用到了Neo4J专用的查询语言,称之为CQL,其语法类似于Sql语言。
如需了解更多,请移步:http://www.w3cschool.cn/neo4j/neo4j_cql_introduction.html