网站首页 > 博客文章 正文
前言
最近项目需要引入neo4j,来显示一些关系图谱.就研究了下springboot 2.x引入neo4j的资料。网上的资料基本都是用spring data来集成.而且采用http驱动模式连接.导致性能不符合我的项目要求,出现查询过慢,以及内存飙高等问题。我只好放弃这种模式,而改用bolt高性能驱动,但是这个模式资料非常少,踩了不少坑。下面是我总结的一些经验。
正文
引入Maven依赖
<!--neo4J 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
<!---弃用http驱动-->
<!-- <dependency>-->
<!-- <groupId>org.neo4j</groupId>-->
<!-- <artifactId>neo4j-ogm-http-driver</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-ogm-bolt-driver</artifactId>
<version>3.2.20</version>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-ogm-core</artifactId>
<version>3.2.20</version>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-ogm-api</artifactId>
<version>3.2.20</version>
</dependency>
备注:后面两个依赖没有的话,java8连接neo4j 4.0版本以上会报错。
增加application.yaml配置
spring:
data:
neo4j:
uri: bolt://xx.xxx.xxx:7687
username: neo4j
password: 密码
增加neo4j的Neo4jConfig的配置类
import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.Driver;
import org.neo4j.driver.GraphDatabase;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @Author: linwl
* @Description:
*/
@Configuration
public class Neo4jConfig {
@Value("${spring.data.neo4j.uri}")
private String uri;
@Value("${spring.data.neo4j.username}")
private String username;
@Value("${spring.data.neo4j.password}")
private String password;
/**
* 图数据库驱动模式
*
* @return
*/
@Bean
public Driver neo4jDriver() {
return GraphDatabase.driver(uri, AuthTokens.basic(username, password));
}
}
编写简单的驱动模式使用基类
import com.zy.supplier.graph.job.impl.web.controller.BaseController;
import org.neo4j.driver.Driver;
import org.neo4j.driver.Session;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* @Author: linwl
* @Description: neo4j驱动模式基类
* @Date: 2021/2/21
*/
@Service
public class BaseNeo4jService {
protected Logger log = LoggerFactory.getLogger(BaseNeo4jService .class);
@Resource
protected Driver driver;
/**
* 根据 员工id获取员工信息
*
* @param gid
* @return
*/
public SupMemberEntity findSupMember(String gid) {
try (Session session = driver.session()) {
String cql = "MATCH (n:SupMember {gid:$gid}) return n";
log.info("start run cql:{},parameters:{}", cql, gid);
Result result = session.run(cql,
parameters(GraphConsts.GID, gid));
if (result.hasNext()) {
Node node = result.single().get("n").asNode();
return GraphTools.convertEntity(node, SupMemberEntity.class);
}
return null;
}
}
}
这样就可以实现对neo4j的自由拼接cql执行。
由于加了spring-boot-starter-data-neo4j的依赖,同时也支持spring data方式的使用,复杂cql就用驱动模式,简单的使用spring data。
猜你喜欢
- 2024-11-24 Neo4J图数据库反欺诈分析实战(二) - 准备数据
- 2024-11-24 从运维的角度带你初识neo4j图形数据库的安装及配置
- 2024-11-24 图形数据库Neo4j常见问题
- 2024-11-24 SpringBoot中文参考指南(2.1.6)32.3、Neo4j
- 2024-11-24 Neo4j 3.0.0 正式发布,支持容器和云部署
- 2024-11-24 SpringBoot2.x教程——NoSQL之安装配置Neo4j数据库
- 2024-11-24 Springboot2.3集成neo4j的过程和踩坑记
- 2024-11-24 你知道Neo4j这是什么数据库吗?有什么用呢?
- 2024-11-24 neo4j基本介绍
- 2024-11-24 Neo4j 因果集群路由策略详解及驱动访问
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)