Neo4j原生的Java API


在本章中,我们将开发和利用的Neo4j本地的Java API测试Java应用程序。 我们将有关下一章Neo4j的Cypher支架的Java API讨论。

开发应用之前,请参阅“Neo4j的Java环境设置”章节设置Eclipse IDE开发这个应用程序


Neo4j的原生的Java API示例

这个例子演示了如何开发Eclipse IDE的Java应用程序开发和测试的Neo4j本地Java API示例

请按照“Neo4j的Java环境设置”中提到的所有步骤章节

第1步 -在同一个Java项目创建一个Java程序

Neo4j的CQL教程

现在开始写的Neo4j的Java API编码来执行的Neo4j数据库的操作

第2步 -创建数据库的Neo4j

GraphDatabaseFactory dbFactory = new GraphDatabaseFactory();
GraphDatabaseService db= dbFactory.newEmbeddedDatabase("C:/TPNeo4jDB");

它创建于指定的路径模式/我们的数据库,如图below.This类似于“CREATE DATABASE”甲骨文的SQL命令。

Neo4j的CQL教程

第3步 -启动Neo4j的数据库事务提交我们的变化

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

因此,对于我们的Java程序的源代码看起来像

package com.tp.neo4j.java.examples;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
public class Neo4jJavaAPIDBOperation {
  public static void main(String[] args) {
	GraphDatabaseFactory dbFactory = new GraphDatabaseFactory();
	GraphDatabaseService db = dbFactory.newEmbeddedDatabase("C:/TPNeo4jDB");
	try (Transaction tx = db.beginTx()) {
		// Perform DB operations	
		tx.success();
	}	
 }
}

第4步 -要创建的节点,我们需要的标签名称。 通过实施的Neo4j的Java API“标签”接口创建一个枚举。

package com.tp.ne4oj.java.examples;
import org.neo4j.graphdb.Label;
public enum Tutorials implements Label {
	JAVA,SCALA,SQL,NEO4J;
}

第5步 -创建节点并设置属性给他们

创建两个节点

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");

第6步 -要建立关系,我们需要关系类型。 因此,创建通过实施Neo4j的“关系”的枚举。

package com.tp.neo4j.java.examples;
import org.neo4j.graphdb.RelationshipType;
public enum TutorialRelationships implements RelationshipType{
	JVM_LANGIAGES,NON_JVM_LANGIAGES;
}

第7步 -创建节点,并设置其属性为它的关系。

创建从Java到节点节点斯卡拉一个关系

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

设置属性这种关系

relationship.setProperty("Id","1234");
relationship.setProperty("OOPS","YES");
relationship.setProperty("FP","YES");

第8步 -最后的源代码。

package com.tp.neo4j.java.examples;import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;public class Neo4jJavaAPIDBOperation {
public static void main(String[] args) {
	GraphDatabaseFactory dbFactory = new GraphDatabaseFactory();
	GraphDatabaseService db= dbFactory.newEmbeddedDatabase("C:/TPNeo4jDB");
	try (Transaction tx = db.beginTx()) {		Node javaNode = db.createNode(Tutorials.JAVA);
		javaNode.setProperty("TutorialID", "JAVA001");
		javaNode.setProperty("Title", "Learn Java");
		javaNode.setProperty("NoOfChapters", "25");
		javaNode.setProperty("Status", "Completed");				
		
		Node scalaNode = db.createNode(Tutorials.SCALA);
		scalaNode.setProperty("TutorialID", "SCALA001");
		scalaNode.setProperty("Title", "Learn Scala");
		scalaNode.setProperty("NoOfChapters", "20");
		scalaNode.setProperty("Status", "Completed");
		
		Relationship relationship = javaNode.createRelationshipTo
		(scalaNode,TutorialRelationships.JVM_LANGIAGES);
		relationship.setProperty("Id","1234");
		relationship.setProperty("OOPS","YES");
		relationship.setProperty("FP","YES");
		
		tx.success();
	}
	   System.out.println("Done successfully");
}
}

第9步 -执行此Java程序中,请检查您的Neo4j之前处于关断模式或没有。 如果没有,请点击“停止”按钮摊牌吧。

Neo4j的CQL教程

第10步 -执行Java程序,并观察Eclipse IDE的控制台输出。

Neo4j的CQL教程

选择我们的Neo4j数据库文件夹,单击“开始”按钮

Neo4j的CQL教程

一旦该数据库成功启动,单击“HTTP://本地主机:7474”访问Neo4j的浏览器链接来观察我们的数据。

Neo4j的CQL教程

第11步 -在Neo4j的数据浏览器的$提示符下面的命令类型

MATCH (a)-[r:JVM_LANGIAGES]->(b)
RETURN r
Neo4j的CQL教程

点击“Java”的节点,查看它的属性

Neo4j的CQL教程

点击“斯卡拉”节点,查看它的属性

Neo4j的CQL教程

点击关系以查看它的属性

Neo4j的CQL教程

注意 -

如果我们的Neo4j的服务器已启动并参照我们的新创建的数据库运行,那么我们不能因为服务器已经得到了该数据库的锁执行我们的计划。

所以,当我们执行我们先前的计划,我们会得到一些错误堆栈跟踪

因为另一个进程已持有锁\ TPNeo4jDB \锁:java.io.IOException异常:无法锁定锁定文件C。

为了避免这个问题,首先停止我们的服务器,再执行该程序。

因为默认情况下的Neo4j数据库服务器只接受一次一个锁。 在实时应用中,Ne04J DBA人们将更新DB属性,以允许在一个时间的锁的某些数量。