Neo4j 程序开发 JavaAPI 嵌入式开发模式(头歌)

文章目录

第1关:JavaAPI 嵌入式开发模式

任务描述

本关任务:使用 Java 创建一个新的 Neo4j 数据库,并且建立两个节点的关系。

相关知识

为了完成本关任务,你需要掌握:

  1. 创建 Neo4j 数据库;
  2. 启动 Neo4j 数据事务;
  3. 创建节点;
  4. 创建节点关系;
  5. 将创建的数据库设置为默认数据库。

创建 Neo4j 数据库

首先我们要知道所需要的 jar 包是那些。

前面的实训中,我们安装 Neo4j 时,有一个 lib 目录,该目录下的所有 jar 包,就是我们所需要的依赖。

依赖列表

在编译软件中编译时,需要先将依赖导入。

导入依赖

依赖导入后,我们就可以开始进行 Neo4j 的内嵌开发了。 创建 Neo4j 数据库的代码为:

java 复制代码
// 所需要的依赖为:
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
import org.neo4j.graphdb.GraphDatabaseService;
import java.io.File;
// 创建工厂类
GraphDatabaseFactory dbFactory = new GraphDatabaseFactory();
// 创建 Neo4j 数据库,
GraphDatabaseService db= dbFactory.newEmbeddedDatabase(new File("F:/TPNeo4jDB"));

源码解释: newEmbeddedDatabase(File):需要传入一个 File 类型的数据,为数据库的位置。 new GraphDatabaseFactory():创建一个图数据库工厂类。 dbFactory.newEmbeddedDatabase: 在指定的路径为我们创建一个 Schema / Database,如下所示。这类似于 Oracle SQL 的 CREATE DATABASE 命令。

启动 Neo4j 数据事务

启动Neo4j数据库事务以提交我们的更改:

java 复制代码
try (Transaction tx = graphDb.beginTx()) {
    // Perform DB operations                
    tx.success();
}

// Perform DB operationstx.success(); 中间的区域写的是需要提交任务,如:创建节点、创建关系等,增删改查的内容。

创建节点

要创建节点,我们需要标签名称。 通过实现 Neo4j Java API Label 接口创建一个枚举。

创建接口:

java 复制代码
import org.neo4j.graphdb.Label;
public enum Tutorials implements Label {
    JAVA,SCALA,SQL,NEO4J;
}

创建节点并为其设置属性: 创建两个节点:

java 复制代码
Node javaNode = db.createNode(Tutorials.JAVA);
Node scalaNode = db.createNode(Tutorials.SCALA);

设置属性:

java 复制代码
javaNode.setProperty("TutorialID", "JAVA001");    
javaNode.setProperty("Title", "Learn Java");
scalaNode.setProperty("TutorialID", "SCALA001");
scalaNode.setProperty("Title", "Learn Scala");

创建节点关系

要创建关系,我们需要关系类型。 通过实现Neo4j"关系类型"创建枚举。

java 复制代码
import org.neo4j.graphdb.RelationshipType;
public enum TutorialRelationships implements RelationshipType{
    JVM_LANGIAGES,NON_JVM_LANGIAGES;
}

创建节点之间的关系并设置它的属性。 创建从 Java 节点到 Scala 节点的关系:

java 复制代码
Relationship relationship = javaNode.createRelationshipTo(scalaNode,
    TutorialRelationships.JVM_LANGIAGES);

将属性设置为此关系:

java 复制代码
relationship.setProperty("Id","1234");

注意: 除了两个枚举接口,其他的都需要放在事务中。

将创建的数据库设置为默认数据库

首先需要将创建得 Neo4j 数据库,移动到 Neo4j 安装目录下的 data/database目录下。

将配置文件中的 #dbms.active_database=graph.db 修改为所创建的 Neo4j 数据库的名称。

配置信息

启动 Neo4j 就可以看到我们创建的 Neo4j 数据库了。

可以查询看看我们刚刚创建的节点和关系:

节点查询

编程要求

根据提示,在右侧编辑器补充代码,

  1. 创建一个名字为:/root/neo4j_database/graph_1.db 的 Neo4j 数据库;

  2. 创建两个节点,节点属性和值为(第一行为字段名,后面两行分别为 Java 节点和 Scala 节点的属性值):

    java 复制代码
    TutorialID,Title,NoOfChapters,Status
    JAVA001,Learn Java,25,Completed
    SCALA001,Learn Scala,20,Completed

    节点标签和关系标签:

    java 复制代码
    NodeLabel:JAVA,SCALA
    RelationLabel:JVM_LANGIAGES

关系属性与值为:

java 复制代码
Id,OOPS,FP
1234,YES,YES
  1. 修改配置文件,更改默认 Neo4j 数据库。

测试说明

平台会对你编写的代码进行测试:

测试输入:; 预期输出:

json 复制代码
Done successfully
p
(:JAVA {Status: "Completed", TutorialID: "JAVA001", Title: "Learn Java", NoOfChapters: "25"})-[:JVM_LANGIAGES {FP: "YES", Id: "1234", OOPS: "YES"}]->(:SCALA {Status: "Completed", TutorialID: "SCALA001", Title: "Learn Scala", NoOfChapters: "20"})

答案代码

修改配置文件,更改默认 Neo4j 数据库

sh 复制代码
vim /opt/neo4j-community-3.5.35/conf/neo4j.conf
# 将 graph.db 改为 graph_1.db

# 可以在 #dbms.active_database=graph.db 下面加一行 dbms.active_database=graph_1.db
# 快捷键 /dbm.a 就能搜索到,yy 复制一行, p 粘贴

代码文件

java 复制代码
package test_neo4j.neo4j.java.examples;

import java.io.File;

import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Label;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.RelationshipType;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;

public class Neo4jJava {
	public static void main(String[] args) {
		//**************Begin************************* 
		// 创建工厂类
        GraphDatabaseFactory dbFactory = new GraphDatabaseFactory();
        
        // 创建 Neo4j 数据库,
        GraphDatabaseService db = dbFactory.newEmbeddedDatabase(new File("/root/neo4j_database/graph_1.db"));

		// 启动Neo4j数据库事务以提交我们的更改
		try (Transaction tx = db.beginTx()) {
            
            // 创建节点并为其设置属性
			Node javaNode = db.createNode(Tutorials.JAVA);
            Node scalaNode = db.createNode(Tutorials.SCALA);
            javaNode.setProperty("TutorialID", "JAVA001");    
            javaNode.setProperty("Title", "Learn Java");
            javaNode.setProperty("NoOfChapters", "25");
            javaNode.setProperty("Status", "Completed");
            scalaNode.setProperty("TutorialID", "SCALA001");
            scalaNode.setProperty("Title", "Learn Scala");
            scalaNode.setProperty("NoOfChapters", "20");
            scalaNode.setProperty("Status", "Completed");
			
			// 创建节点之间的关系并设置它的属性。
			// 创建从Java节点到Scala节点的关系
			Relationship relationship = javaNode.createRelationshipTo(scalaNode, TutorialRelationships.JVM_LANGIAGES);
            
			// 将属性设置为此关系
			relationship.setProperty("Id","1234");
            relationship.setProperty("OOPS","YES");
            relationship.setProperty("FP","YES");
            
            // Perform DB operations                
            tx.success();
            System.out.println("Done successfully");
        }
	}
    
	// 要创建节点,我们需要标签名称。 通过实现Neo4j Java API"Label"接口创建一个枚举。
    public enum Tutorials implements Label {
        JAVA,SCALA,SQL,NEO4J;
    }
    
	// 要创建关系,我们需要关系类型。 通过实现Neo4j"关系类型"创建枚举。
	public enum TutorialRelationships implements RelationshipType{
        JVM_LANGIAGES,NON_JVM_LANGIAGES;
    }
    //**************End*************************
}
相关推荐
Lary_Rock32 分钟前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
XiaoLeisj1 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
paopaokaka_luck2 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
dayouziei2 小时前
java的类加载机制的学习
java·学习
云飞云共享云桌面2 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq3 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
Yaml43 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~3 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616884 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
一坨阿亮4 小时前
Linux 使用中的问题
linux·运维