背景:我们项目第一次部署图数据库,要求我们把现有的业务数据以及关系上线第一时间初始化到Neo4j中。开发环境数据量已经百万级别。生成环境数据量更多。
我刚开始开发的时候,由于对Neo4j的了解并没有很多,第一想到的是用代码通用组装create语句进行创建节点以及关系。
业务说明:系统中有很多实体表,每个实体表中有自己的数据,不同实体有一张关系表进行维护。
我开发的思路是:1.先将所有的表中数据取出来做为节点 2.根据关系表将这个数据的关系查出来之后组装语句将数据添加到Neo4j中。
具体代码如下(Springboot项目版本2.2.5RELEASE):
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
配置文件进行下面配置:
spring:
data:
neo4j:
uri: bolt://localhost:7687
username: neo4j
password: neo4j
使用Java代码组装CQL语句,用原生session进行
Neo4jConfig.java
@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;
@Bean
public org.neo4j.ogm.config.Configuration getConfiguration() {
org.neo4j.ogm.config.Configuration configuration = new org.neo4j.ogm.config.Configuration.
Builder().uri(uri).connectionPoolSize(100).credentials(userName, password).withBasePackages(