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属性,以允许在一个时间的锁的某些数量。