5.Neo4J和SpringData以及SpringHATEOAS

这篇博客介绍了如何使用Neo4J图数据库代替传统关系型数据库进行建模,以提高数据建模的自然性。通过Spring Data Neo4J(SDN)实现数据库操作,简化了增删查改的过程。同时,文章讨论了如何利用Spring HATEOAS实现RESTful API的第三级成熟度模型,通过动态创建链接地址提升服务间交互的灵活性。
摘要由CSDN通过智能技术生成
上一篇我们部署了负责用户信息的服务,接下来开始编写第一个与业务有关的服务。
我们需要一个设备目录来保存生产中需要用到的设备信息。设备有几个属性包括属于哪个设备分类、名称、型号、编号是否唯一、是否作为套装包含其他设备。

Neo4J

如果使用MySql建表的话我们的表结构大致是这个样子的:
这里唯一复杂一点的就是设备表有一个自身多对多关系用来存储包含设备的数量。例如一套工具箱中包含5把改锥,6把螺丝刀这种关系。使用传统关系型数据库的缺点显而易见,在使用外键查询时需要查询整张表中的内容,用过Hibernate的应该都有这种感觉,单向、双向、一对一、一对多、多对多关系对于建模逻辑不是很友好。

这里写图片描述

按照人正常的逻辑这个模型应该被描述为:一个设备属于哪一个设备分类,又包含哪些设备多少个。那么比较理想的模型应该是这个样子的:

这里写图片描述

这里有一个和关系型数据库最大的概念不同,即没有表和外键的概念,而是变成了节点和关系。节点可以简单的理解为对象的一个实例,而关系中还可以包含属性。实际上Neo4J作为图数据库所保存的就是这种模型:

这里写图片描述

这里看到航灯、发电机、发电机套装、电池都和电气系统存在一个 BELONG_TO_SYSTEM 的关系,而发电机套装又和发电机、电池间存在 CONTIANS 关系,并且 CONTIANS 关系上还有一个number属性来记录包含的数量。这样的模型在开发建模时会很自然,下面会看到。

看过简单的介绍,下面开始实践吧,这里的配置仅供使用SpringBoot时作为参考。
首先,到官网下载Neo4J的安装文件,安装完成后启动程序会有这样的界面:

这里写图片描述

点击Start后访问本地的7474端口就可以进入控制台了:

这里写图片描述


Spring Data Neo4J(SDN)

要连接Neo4J就需要驱动,Neo4J有三种连接方式,分别是HTTP、Bolt、Embedded。Embedded是内嵌性的,这里就不说了。spring-boot-starter-data-neo4j默认支持了HTTP方式,如果要是有Bolt方式还需要单独添加依赖,在项目的pom文件中加入下面的依赖:
<!-- SDN Neo4j -->
<dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-data-neo4j</artifactId>
   </dependency>
   <dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j-ogm-bolt-driver</artifactId>
    <version>2.1.1</version>
</dependency>
这里说一下SpringDataNeo4J,SDN的功能类似于Hibernate,提供了O/GMapping的功能,也就是说对于简单的增改查删,我们可以不用编写Cypher语句(对应SQL语句),而是用SDN提供的api例如save、load等操作。当然SDN也支持Cypher。在添加依赖后,需要配置SDN。在配置类(SpringBoot中即Application.java)中做如下配置:
//Spring Data Neo4j
    <
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值