阅读(3277) (19)

Neo4j Cypher - API示例

2016-12-19 07:40:50 更新

在上一章中,我们已经讨论了如何使用Neo4j Native Java API开发和测试Java应用程序。 现在我们将在本章中讨论Neo4j Cypher Java API。

在开发应用程序之前,请参考“Neo4j Java环境设置”一章来设置Eclipse IDE来开发此应用程序

如果你观察到Neo4j Native Java API方法,开发大型应用程序是非常乏味和麻烦的。 所以为了避免这种复杂性,Neo4j引入了另一组Java API。

此Java API用于直接执行Neo4j CQL命令。 它类似于JDBC API直接执行SQL命令。


Neo4j Cypher Java API示例

本示例演示如何在Eclipse IDE中开发Java应用程序,以开发和测试Neo4j Cypher Java API示例


第1步  创建Java类JavaNeo4jCQLRetrivalTest


创建Java类

现在开始编写Neo4j Java API编码以执行Neo4j DB操作


第2步 -创建Neo4j数据库

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

它在指定的路径为我们创建一个Schema / Database,如下所示。这类似于Oracle SQL的“CREATE DATABASE”命令。


创建一个Schema / Database


第3步 -创建Neo4j Cypher执行引擎。它用于在Java应用程序中执行Neo4j CQL命令。

ExecutionEngine execEngine = new ExecutionEngine(graphDb);


第4步 - 通过使用Neo4j Cypher Execution Engine,执行Neo4j CQL Command以检索CQL MATCH命令的结果。

ExecutionResult execResult = execEngine.execute
   ("MATCH (java:JAVA) RETURN java");


第5步 -获取CQL命令结果的字符串,以在控制台中打印结果。

String results = execResult.dumpToString();
System.out.println(results);


第6步 -最终源代码。

package com.tp.neo4j.java.cql.examples;

import org.neo4j.cypher.javacompat.ExecutionEngine;
import org.neo4j.cypher.javacompat.ExecutionResult;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;

public class JavaNeo4jCQLRetrivalTest {
    
   public static void main(String[] args) {
      GraphDatabaseFactory graphDbFactory = new GraphDatabaseFactory();

      GraphDatabaseService graphDb = graphDbFactory.newEmbeddedDatabase("C:/TPNeo4jDB");

      ExecutionEngine execEngine = new ExecutionEngine(graphDb);
      ExecutionResult execResult = execEngine.execute("MATCH (java:JAVA) RETURN java");
      String results = execResult.dumpToString();
      System.out.println(results);
   }
}

第7步 -在执行此Java程序之前,检查您的Neo4j是否处于关闭模式。 如果没有,请点击“停止”按钮展开它。


检查Neo4j是否处于关闭模式

第8步 -执行Java程序并在Eclipse IDE控制台中观察输出。


执行Java程序

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


Neo4j数据库文件夹


一旦此数据库成功启动,通过单击“http:// localhost:7474”链接访问Neo4j浏览器来观察我们的数据。


http:// localhost:7474


第9步 -在Neo4j数据浏览器的$ prompt下输入以下命令

MATCH (java:JAVA) RETURN java.TutorialID,java.Title,
   java.NoOfChapters,java.Status


MATCH (java:JAVA) RETURN java.TutorialID,java.Title,    java.NoOfChapters,java.Status


在数据浏览器中查看结果


观察Eclipse IDE结果
如果我们观察Eclipse IDE结果和Neo4j数据浏览器的结果,两者都是正确的。


注意 -

像这样,我们可以使用Neo4j JAVA API执行任何CQL命令。

如果我们的Neo4j服务器通过引用我们新创建的数据库启动和运行,那么我们不能执行我们的程序,因为服务器已经锁定了这个数据库。

所以当我们执行我们以前的程序时,我们会得到一些错误堆栈跟踪


java.io.IOException: Couldn't lock lock file C:TPNeo4jDBlock because another process already holds the lock.


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

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