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的Java API编码来执行的Neo4j数据库的操作
第2步 -创建数据库的Neo4j
GraphDatabaseFactory dbFactory = new GraphDatabaseFactory();
GraphDatabaseService db= dbFactory.newEmbeddedDatabase("C:/TPNeo4jDB");
它创建于指定的路径模式/我们的数据库,如图below.This类似于“CREATE DATABASE”甲骨文的SQL命令。

第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之前处于关断模式或没有。 如果没有,请点击“停止”按钮摊牌吧。

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

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

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

第11步 -在Neo4j的数据浏览器的$提示符下面的命令类型
MATCH (a)-[r:JVM_LANGIAGES]->(b) RETURN r

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

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

点击关系以查看它的属性

注意 -
如果我们的Neo4j的服务器已启动并参照我们的新创建的数据库运行,那么我们不能因为服务器已经得到了该数据库的锁执行我们的计划。
所以,当我们执行我们先前的计划,我们会得到一些错误堆栈跟踪
因为另一个进程已持有锁\ TPNeo4jDB \锁:java.io.IOException异常:无法锁定锁定文件C。
为了避免这个问题,首先停止我们的服务器,再执行该程序。
因为默认情况下的Neo4j数据库服务器只接受一次一个锁。 在实时应用中,Ne04J DBA人们将更新DB属性,以允许在一个时间的锁的某些数量。