Neo4j Cypher - API示例

2018-01-02 16:27 更新

在上一章中,我們已經討論了如何使用Neo4j Native Java API開發(fā)和測試Java應用程序。 現在我們將在本章中討論Neo4j Cypher Java API。

在開發(fā)應用程序之前,請參考“Neo4j Java環(huán)境設置”一章來設置Eclipse IDE來開發(fā)此應用程序

如果你觀察到Neo4j Native Java API方法,開發(fā)大型應用程序是非常乏味和麻煩的。 所以為了避免這種復雜性,Neo4j引入了另一組Java API。

此Java API用于直接執(zhí)行Neo4j CQL命令。 它類似于JDBC API直接執(zhí)行SQL命令。


Neo4j Cypher Java API示例

本示例演示如何在Eclipse IDE中開發(fā)Java應用程序,以開發(fā)和測試Neo4j Cypher Java API示例


第1步  創(chuàng)建Java類JavaNeo4jCQLRetrivalTest


創(chuàng)建Java類

現在開始編寫Neo4j Java API編碼以執(zhí)行Neo4j DB操作


第2步 -創(chuàng)建Neo4j數據庫

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

它在指定的路徑為我們創(chuàng)建一個Schema / Database,如下所示。這類似于Oracle SQL的“CREATE DATABASE”命令。


創(chuàng)建一個Schema / Database


第3步 -創(chuàng)建Neo4j Cypher執(zhí)行引擎。它用于在Java應用程序中執(zhí)行Neo4j CQL命令。

ExecutionEngine execEngine = new ExecutionEngine(graphDb);


第4步 - 通過使用Neo4j Cypher Execution Engine,執(zhí)行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步 -在執(zhí)行此Java程序之前,檢查您的Neo4j是否處于關閉模式。 如果沒有,請點擊“停止”按鈕展開它。


檢查Neo4j是否處于關閉模式

第8步 -執(zhí)行Java程序并在Eclipse IDE控制臺中觀察輸出。


執(zhí)行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執(zhí)行任何CQL命令。

如果我們的Neo4j服務器通過引用我們新創(chuàng)建的數據庫啟動和運行,那么我們不能執(zhí)行我們的程序,因為服務器已經鎖定了這個數據庫。

所以當我們執(zhí)行我們以前的程序時,我們會得到一些錯誤堆棧跟蹤


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


為了避免這個問題,首先停止我們的服務器,然后執(zhí)行程序。

因為默認情況下Neo4j DB Server一次只接受一個鎖。 在實時應用程序中,Ne04J DBA人員將更新數據庫屬性以允許一次允許一些數量的鎖。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號