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.hqwc.cn/news/236373.html

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

相关文章

Windows10中在Visual Studio2017中VC++项目安装使用GoogleTest库

Windows10中在Visual Studio2017中VC项目安装使用GoogleTest库 在Windows10中VC程序中可以不用自己手动下载GoogleTest源代码,可以直接通过【项目】-> 【管理 NuGet 程序包】-> 【浏览】-> 搜索 googletest, 找到Microsoft.googletest.v140.wi…

运维知识点-Nginx

Nginx Nginx解析安全实战预备知识实验目的#制作图片木马# web服务器-Nginx服务命令及配置centOS7安装安装所需插件安装gccpcre、pcre-devel安装zlib安装安装openssl Nginx解析安全实战 预备知识 NginxPHP/FastCGI构建的WEB服务器工作原理 Nginx|FastCGI简介 Nginx (“engin…

冒泡排序算法是对已知的数列进行从小到大的递增排序。

题目描述冒泡排序算法是对已知的数列进行从小到大的递增排序每个实例输出两行,第一行输出第1轮结果, 第二行输出最终结果 它的排序方法如下: 1.对数列从头开始扫描,比较两个相邻的元素,如果前者大于后者,则交换两者位置 2.重复步骤1,直到没有…

传统算法: Pygame 实现快速排序

使用 Pygame 模块实现了快速排序的动画演示。首先,它生成一个包含随机整数的数组,并通过 Pygame 在屏幕上绘制这个数组的条形图。接着,通过快速排序算法对数组进行排序,动画效果可视化每一步的排序过程。在排序的过程中,程序选择一个基准元素(pivot),将数组分成两部分,…

同旺科技 分布式数字温度传感器 -- OPC Servers测试

内附链接 1、数字温度传感器 主要特性有: ● 支持PT100 / PT1000 两种铂电阻; ● 支持 2线 / 3线 / 4线 制接线方式; ● 支持5V~17V DC电源供电; ● 支持电源反接保护; ● 支持通讯波特率1200bps、2…

Spring Security 6.x 系列(7)—— 源码分析之建造者模式

一、建造者模式 WebSecurity、HttpSecurity、AuthenticationManagerBuilder 都是框架中的构建者,把他们放到一起看看他们的共同特点: 查看AuthenticationManagerBuilder的继承结构图: 查看HttpSecurity的继承结构图: 查看WebSec…

DES加密技术概述与应用

一、引言 随着信息技术的飞速发展,数据安全已成为越来越受到重视的问题。数据加密技术作为保障信息安全的核心技术之一,得到了广泛的研究和应用。DES(Data Encryption Standard)作为一种对称加密算法,凭借其高效、可靠…

Loki安装部署

Loki安装部署 1、Loki介绍 Loki 是受 Prometheus 启发由 Grafana Labs 团队开源的水平可扩展,高度可用的多租户日志聚合系统。开发语 言: Google Go。它的设计具有很高的成本效益,并且易于操作。使用标签来作为索引,而不是对全文进行检索&…

C++基础 -22- 菱形继承

理想的菱形继承如图所示 #include "iostream"using namespace std;class top {public:void baseshow(){cout << "baseshow" << endl;} };class left:public::top {public:void leftshow(){cout << "leftshow" << end…

python回顾

一.如果访问远程电脑的mysql mysql -h 127.0.0.1 -P 3306 -uroot -p 1,设置用户的远程登录权限 查询: select user,host from mysql.user; 设置: update mysql.user set host% where userroot 2.关闭防火墙,或者开发3306端口 二,局域网内访问django项目 1,在settings.p…

微调Fine tune

网络架构 一个神经网络一般可以分为两块 特征抽取将原始像素变成容易线性分割的特征线性分类器来做分类 微调&#xff1a;使用之前已经训练好的特征抽取模块来直接使用到现有模型上&#xff0c;而对于线性分类器由于标号可能发生改变而不能直接使用 训练 是一个目标数据集上…

SpringBoot整合validation数据校验

1. 首先引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency> 点标识进去可以发现是通过Hibernate Validator使用 Java Bean Validation 2. 属性上…