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

文章目录

  • 第1关:JavaAPI 嵌入式开发模式
    • 任务描述
    • 相关知识
      • 创建 Neo4j 数据库
      • 启动 Neo4j 数据事务
      • 创建节点
      • 创建节点关系
      • 将创建的数据库设置为默认数据库
    • 编程要求
    • 测试说明
    • 答案代码
      • 修改配置文件,更改默认 Neo4j 数据库
      • 代码文件

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

任务描述

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

相关知识

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

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

创建 Neo4j 数据库

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

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

img

依赖列表

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

img

导入依赖

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

// 所需要的依赖为:
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数据库事务以提交我们的更改:

try (Transaction tx = graphDb.beginTx()) {// Perform DB operations                tx.success();
}

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

创建节点

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

创建接口:

import org.neo4j.graphdb.Label;
public enum Tutorials implements Label {JAVA,SCALA,SQL,NEO4J;
}

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

Node javaNode = db.createNode(Tutorials.JAVA);
Node scalaNode = db.createNode(Tutorials.SCALA);

设置属性:

javaNode.setProperty("TutorialID", "JAVA001");    
javaNode.setProperty("Title", "Learn Java");
scalaNode.setProperty("TutorialID", "SCALA001");
scalaNode.setProperty("Title", "Learn Scala");

创建节点关系

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

import org.neo4j.graphdb.RelationshipType;
public enum TutorialRelationships implements RelationshipType{JVM_LANGIAGES,NON_JVM_LANGIAGES;
}

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

Relationship relationship = javaNode.createRelationshipTo(scalaNode,TutorialRelationships.JVM_LANGIAGES);

将属性设置为此关系:

relationship.setProperty("Id","1234");

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

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

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

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

img

配置信息

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

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

img

节点查询

编程要求

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

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

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

    TutorialID,Title,NoOfChapters,Status
    JAVA001,Learn Java,25,Completed
    SCALA001,Learn Scala,20,Completed
    

    节点标签和关系标签:

    NodeLabelJAVASCALA
    RelationLabelJVM_LANGIAGES
    

关系属性与值为:

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

测试说明

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

测试输入:; 预期输出:

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 数据库

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 粘贴

代码文件

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*************************
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/188907.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【文献阅读笔记】关于GANomaly的异常检测方法

文章目录 1、GANomaly: Semi-Supervised Anomaly Detection via Adversarial Training模型主要创新 2、Skip-GANomaly: Skip Connected and AdversariallyTrained Encoder-Decoder Anomaly Detection模型主要创新点 3、Industrial surface defect detection and localization u…

YOLOv8改进 | 2023 | AKConv轻量级架构下的高效检测(可变核卷积)

一、本文介绍 本文给大家带来的改进内容是AKConv(可变核卷积)是一种创新的卷积神经网络操作,它旨在解决标准卷积操作中的固有缺陷(采样形状是固定的),AKConv的核心思想在于它为卷积核提供了任意数量的参数…

RTDETR阅读笔记

RTDETR阅读笔记 摘要 DETR的高计算成本限制了它们的实际应用,并阻碍了它们充分利用无需后处理(例如非最大抑制NMS)的优势。文中首先分析了NMS对实施目标检测的精度和速度的负面影响。(RTDETR是第一个实时端到端的目标检测器。具…

Word 小知识之 docx 和 doc 的区别

下面我们从4个方面为大家总结了有关于docx和doc的区别,一起来看一看: 1. 文件格式 doc和docx的区别中较大的区别就是文件格式不同,一个是二进制一个为XML格式。doc:是早期的Word文档格式,采用二进制文件格式。这种…

ipa应用测试平台怎么开开具发票

控制台-个人中心-发票管理 ●点击申请发票可以开具发票 ●申请发票-填写资料-勾选订单 ●个人发票开具以及公司发票开具 ●提交发票申请 ●等待申请成功开具发票 ●发票开具成功,我们可以开具或者查看发票

二分查找与搜索树高频问题

关卡名 逢试必考的二分查找 我会了✔️ 内容 1.山脉数组的峰顶索引 ✔️ 2.旋转数字的最小数字 ✔️ 3.寻找缺失数字 ✔️ 4.优化求平方根 ✔️ 5.中序与搜索树原理 ✔️ 6.二叉搜索树中搜索特定值 ✔️ 7.验证二叉搜索树 ✔️ 基于二分查找思想,可以拓展出很…

conda 安装指定Version的指定Build

入下图,我想装cudnn的7.6.5的指定Build版本cuda10.0_0 应该使用如下命令: mamba install cudnn7.6.5cuda10.0_0 没有mamba用conda install也可以

04 # 第一个 TypeScript 程序

初始化项目以及安装依赖 新建 ts_in_action 文件夾 npm init -y安装好 typescript,就可以执行下面命令查看帮助信息 npm i typescript -g tsc -h创建配置文件,执行下面命令就会生成一个 tsconfig.json 文件 tsc --init使用 tsc 编译一个 js 文件 新…

daima8资源网整站数据打包完整代码(集成了ripro9.1主题,开箱即用)

基于ripro9.1完全明文无加密后门版本定制开发,无需独立服务器,虚拟主机也可以完美运营,只要主机支持php和mysql即可。整合了微信登录和几款第三方的主题文件,看起来更美观一些。站长本人就是程序员,所以本站的代码资源…

PyCharm关闭很慢的解决办法

使用PyCharm2023.2.5的时候碰到了一个问题,每次关闭项目的时候都很慢很慢,在网上查了,有可能是因为缓存的问题,于是试着清除缓存,发现还是没有用,关闭的时候还是很慢,后面看到一种解决办法&…

算法:笛卡尔平面坐标系上,若干连接点形成线,剔除距离小于阈值的点,Kotlin

算法&#xff1a;笛卡尔平面坐标系上&#xff0c;若干连接点形成线&#xff0c;剔除距离小于阈值的点&#xff0c;Kotlin const val THRESHOLD 0.6f //距离小于这个点将被剔除。data class Point(val x: Float, val y: Float)fun removeNearbyPoint(points: List<Point>…

指针概念及应用

指针的相关概念 1.指针是什么&#xff1f; 指针是内存中的一个最小单元的编号&#xff0c;其实就是指地址&#xff0c;对于我们平时口中所讲述的指针&#xff0c;通常指的是指针变量&#xff0c;指针变量是用来存放内存地址的变量。 2.地址与指针 一个32位机器在一个进程中…

多线程原理和常用方法以及Thread和Runnable的区别

文章目录 &#x1f366;多线程原理&#x1f367;随机性打印&#x1f368;多线程内存图解 &#x1f369;Thread类的常用方法&#x1f36a;获取线程名称 getName()&#x1f382;设置线程名称 setName() 或者 new Thread("线程名字")&#x1f370;使当前正在执行的线程以…

python 交互模式和命令行模式的问题

python 模式的冲突 unexpected character after line continuation character 理论上 ide里&#xff0c;输入 python 文件路径\文件.py 就可以执行 但是有时候却报错 unexpected character after line continuation character 出现上述错误的原因是没有退出解释器&#x…

JMeter从入门到精通

1、 jmeter的介绍 jmeter也是一款接口测试工具&#xff0c;由java语言开发的&#xff0c;主要进行性能测试。 2、jmeter安装 jmeter官网下载链接&#xff1a; https://jmeter.apache.org/download_jmeter.cgi &#xff0c;查看是否安装成功【jmeter -v】 下载 java jdk1.8&…

计算一个4+4+1的队形变换问题

2 2 1 1 2 2 2 2 1 1 2 2 3 3 A A 3 3 4 4 A 12 4 4 4 4 12 A 4 4 2 2 1 1 2 2 操场上有4个人以4a1的结构在6*6的平面上运动&#xff0c;行分布是0&#xff0c;0&#xff0c;0&#xff0c;1&#xff0c;1&#xff0c;2&#xff0c;列分布…

[Android] c++ 通过 JNI 调用 JAVA函数

如何使用&#xff1a; Calling Java from C with JNI - CodeProject c里的 JNI 类型 和 JAVA 类型的映射关系&#xff1a; JNI Types and Data Structures Primitive Types and Native Equivalents Java TypeNative TypeDescriptionbooleanjbooleanunsigned 8 bitsbytejbyt…

局域网协议:以太网(Ethernet)详解

文章目录 Ethernet的组成以太网和 Wi-Fi以太网应用场景以太网的发展历程以太网数据链路层CSMA/CD (载波侦听多路访问/冲突检测)推荐阅读 以太网&#xff08;Ethernet&#xff09;是一种局域网&#xff08;LAN&#xff09;技术&#xff0c;用于在局域网范围内传输数据。它是最常…

【深度学习】gan网络原理生成对抗网络

【深度学习】gan网络原理生成对抗网络 GAN的基本思想源自博弈论你的二人零和博弈&#xff0c;由一个生成器和一个判别器构成&#xff0c;通过对抗学习的方式训练&#xff0c;目的是估测数据样本的潜在分布并生成新的数据样本。 1.下载数据并对数据进行规范 transform tran…

《ChatGPT实操应用大全》探索无限可能

&#x1f5e3;️探索ChatGPT&#xff0c;开启无限可能&#x1f680; 文末有免费送书福利&#xff01;&#xff01;&#xff01; ChatGPT是人类有史以来最伟大的发明。他能写作、绘画、翻译、看病、做菜、编程、数据分析、制作视频、解高等数学题…&#xff0c;他会的技能…