Neo4j与springdata集成
1、maven工程需导入的jar包
<!-- neo4j -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j</artifactId>
<version>4.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.neo4j.app</groupId>
<artifactId>neo4j-server</artifactId>
<version>2.3.2</version>
</dependency>
2、对应spring的jar包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
3、加载neo4j的驱动配置

@Configuration
@EnableNeo4jRepositories("com.neo4j.repository")
@EnableTransactionManagement public class Neo4jApplication extends Neo4jConfiguration {</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">final</span> <span style="color: #0000ff;">int</span> NEO4J_PORT = 7474<span style="color: #000000;">; @Bean
</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> SessionFactory getSessionFactory() {
</span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span> SessionFactory("com.neo4j.domain"<span style="color: #000000;">);
}
//配置事务
@Bean
@Qualifier("neo4jTransactionManager")
public Neo4jTransactionManager neo4jTransactionManager() throws Exception {
return new Neo4jTransactionManager(getSession());
}}

4、连接方式采用httpDriver
添加配置文件ogm.properties
driver=org.neo4j.ogm.drivers.http.driver.HttpDriver
URI=http://neo4j:admin@localhost:7474
5、domain实体配置

//节点注解(可以添加label标签)
@NodeEntity
public class Thing{
//neo4j中节点的ID
private Long id;</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Long getId() {
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> id;
} @Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">boolean</span><span style="color: #000000;"> equals(Object o) {
</span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">this</span> ==<span style="color: #000000;"> o)
</span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">if</span> (o == <span style="color: #0000ff;">null</span> || id == <span style="color: #0000ff;">null</span> || getClass() !=<span style="color: #000000;"> o.getClass())
</span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #000000;">;
Entity entity </span>=<span style="color: #000000;"> (Entity) o;
</span><span style="color: #0000ff;">if</span> (!<span style="color: #000000;">id.equals(entity.id))
</span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #000000;">;
} @Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> hashCode() {
</span><span style="color: #0000ff;">return</span> (id == <span style="color: #0000ff;">null</span>) ? -1<span style="color: #000000;"> : id.hashCode();
}
</span><span style="color: #008000;">//</span><span style="color: #008000;">属性</span>
<span style="color: #0000ff;">private</span><span style="color: #000000;"> String userId; </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String name; </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String desc;
</span><span style="color: #008000;">//</span><span style="color: #008000;">配置转换</span>
@DateString("yy-MM-dd"<span style="color: #000000;">)
</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Date dateTime;
</span><span style="color: #008000;">//</span><span style="color: #008000;">设置关系</span>
@Relationship(type = "HAVE_PROP", direction=<span style="color: #000000;">Relationship.OUTGOING)
List</span><Property> properties = <span style="color: #0000ff;">new</span> ArrayList<Property><span style="color: #000000;">(); @Relationship(type </span>= "HAVE_SERVICE", direction=<span style="color: #000000;">Relationship.OUTGOING)
Set</span><Service> services = <span style="color: #0000ff;">new</span> HashSet<Service><span style="color: #000000;">(); @Relationship(type </span>= "HAVE_PROP"<span style="color: #000000;">)
Set</span><ThingPropRelation> propRelations = <span style="color: #0000ff;">new</span> HashSet<ThingPropRelation><span style="color: #000000;">(); @Relationship(type </span>= "HAVE_SERVICE"<span style="color: #000000;">)
Set</span><ThingServiceRelation> serviceRelations = <span style="color: #0000ff;">new</span> HashSet<ThingServiceRelation><span style="color: #000000;">(); @Relationship(type </span>= "HAVE_SERVICE"<span style="color: #000000;">)
Set</span><ThingServiceRelation> serviceRelations = <span style="color: #0000ff;">new</span> HashSet<ThingServiceRelation><span style="color: #000000;">();
}

设置节点的关系

//设置关系实体
@RelationshipEntity(type="HAVE_PROP")
public class ThingPropRelation extends Entity {
//开始节点
@StartNode
Thing thing;
//结束节点
@EndNode
Property property;</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> ThingPropRelation() {
} </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Thing getThing() {
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> thing;
} </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> setThing(Thing thing) {
</span><span style="color: #0000ff;">this</span>.thing =<span style="color: #000000;"> thing;
} </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Property getProperty() {
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> property;
} </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> setProperty(Property property) {
</span><span style="color: #0000ff;">this</span>.property =<span style="color: #000000;"> property;
}
}

6、设置repository

//接口继承GraphRepository
//提供基础的保存修改删除查询功能
//特殊查询可以通过@Query注解实现
public interface ThingRepository extends GraphRepository<Thing> {
Thing findByName(String name);@Query(</span>"MATCH (t:Thing {name:{0}})-[r:HAVE_PROP]->(p) RETURN p"<span style="color: #000000;">)
Iterable</span><Property><span style="color: #000000;"> getThingPropertyByThingName(String thingName);
}

7、应用
@Autowired
private ThingRepository thingRepository;
调用
Thing thing = thingRepository.findByName("thing");
原文地址:https://www.cnblogs.com/changj/p/6021775.html
Neo4j与springdata集成的更多相关文章
- Neo4J空间数据存储
1.Neo4j Spatial 简介 1.1Neo4j Spatial概念 Neo4j Spatial项目是图数据库Neo4j的一个插件,它通过将空间数据映射到图模型(graph model),它将对 ...
- Neo4j Desktop 管理工具的安装和应用
安装和启动Neo4j桌面 如果您还没有,请下载 Neo4j.使用提供的说明(下载时显示),按照步骤1安装并启动Neo4j Desktop应用程序.下载页面上的步骤2说明向您展示了如何设置您的第一个项目 ...
- ElasticSearch 安装, 带视频
疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并 ...
- mongodb重点知识总结
Mongodb总结 一.NoSQL型数据库介绍 NoSQL,泛指非关系型的数据库.NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题.NoSQL(NoSQL ...
- ElasticSearch集成SpringData史上最全查询教程
1.简单介绍 springboot 使用springdata操作es,ElasticsearchRepository使用QueryBuilder构造查询条件 2.集成es //maven集成 < ...
- 图数据库Neo4j的基本使用及与SpringBoot集成
Neo4j 官网地址:https://neo4j.com/ 下载地址:https://neo4j.com/download-center/#community 官方入门文档:https://neo4j ...
- Neo4j在linux上的安装与Springboot的集成
Neo4j在linux上的安装与Springboot的集成 在linux安装: 前提:安装配置好java环境 1.下载neo4j 官方社区版下载地址:https://neo4j.com/downloa ...
- Springboot集成SpringData JPA
序 StringData JPA 是微服务框架下一款ORM框架,在微服务体系架构下,数据持久化框架,主要为SpringData JPA及Mybatis两种,这两者的具体比较,本文不做阐述,本文只简单阐 ...
- Spring boot项目集成Neo4j
第一步,创建Springboot工程 使用Eclipse 创建Maven项目,并修改pom.xml文件为: <?xml version="1.0" encoding=&quo ...
随机推荐
- Repeater 分页
1.RepeaterDemo_Page.aspx前台代码 <body> <form id="form1" runat="server"> ...
- matlab 求已知概率密度函数的随机数生成
N=10000; %需要随机数的个数 a=zeros(N,1); %存放随机数的数列 n=0; f1=@(t) 1./(1.2*pi*(1+5*(t-7.3).^2)); f2=@(t) 1./(1. ...
- linux 服务器安装php5.6
查看原有的php版本:php -v 如果已经装了低版本的php,为了避免冲突,查看: yum list installed | grep php 删除:自行百度吧.可能不能一次性全部删除,只能一个一个 ...
- sql(10) sum
SUM() 函数SUM 函数返回数值列的总数(总额).SQL SUM() 语法SELECT SUM(column_name) FROM table_name新建表 StudentSS_id Grade ...
- android studio 一个项目如何打包多个apk
1.修改app的build.gradle文件 假设我们同一套代码编译2个app:demo1和demo2 android { ... productFlavors { // demo1 demo1 { ...
- [转]SSM(Spring+SpringMVC+Mybatis)框架搭建详细教程【附源代码Demo】
一.新建项目 运行IDEA,进入初始化界面,然后我们选择新建项目(进入主界面新建项目也是一样的) 在Maven选项卡里面找到对应的java web选项,然后我们点下一步 这一步填入组织等信息,这里比较 ...
- double to string 损失精度的问题
https://blog.csdn.net/magieclarence/article/details/6792511?utm_source=blogxgwz0 类似于这样 double 的精度是一个 ...
- [JZOJ4616] 【NOI2016模拟7.12】二进制的世界
题目 题目大意 给你一个数列,每个数为[0,65535][0,65535][0,65535]内的整数. 给定一个位运算操作optoptopt,是andandand.ororor.xorxorxor中的 ...
- ListenerExecutionFailedException: Listener threw exception
rabbitmq 监听的队列名称写错导致404找不到队列
- 关于InputMethodManager的使用方法
InputMethodManager是一个用于控制显示或隐藏输入法面板的类(当然还有其他作用).获取InPutMethodManager的方法很简单. InputMethodManager imm = ...