Neo4j Cypher - API示例

2018-01-02 16:27 更新

在上一章中,我們已經(jīng)討論了如何使用Neo4j Native Java API開(kāi)發(fā)和測(cè)試Java應(yīng)用程序。 現(xiàn)在我們將在本章中討論Neo4j Cypher Java API。

在開(kāi)發(fā)應(yīng)用程序之前,請(qǐng)參考“Neo4j Java環(huán)境設(shè)置”一章來(lái)設(shè)置Eclipse IDE來(lái)開(kāi)發(fā)此應(yīng)用程序

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

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


Neo4j Cypher Java API示例

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


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


創(chuàng)建Java類

現(xiàn)在開(kāi)始編寫Neo4j Java API編碼以執(zhí)行Neo4j DB操作


第2步 -創(chuàng)建Neo4j數(shù)據(jù)庫(kù)

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

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


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


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

ExecutionEngine execEngine = new ExecutionEngine(graphDb);


第4步 - 通過(guò)使用Neo4j Cypher Execution Engine,執(zhí)行Neo4j CQL Command以檢索CQL MATCH命令的結(jié)果。

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


第5步 -獲取CQL命令結(jié)果的字符串,以在控制臺(tái)中打印結(jié)果。

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是否處于關(guān)閉模式。 如果沒(méi)有,請(qǐng)點(diǎn)擊“停止”按鈕展開(kāi)它。


檢查Neo4j是否處于關(guān)閉模式

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


執(zhí)行Java程序

選擇我們的Neo4j數(shù)據(jù)庫(kù)文件夾,然后單擊“開(kāi)始”按鈕


Neo4j數(shù)據(jù)庫(kù)文件夾


一旦此數(shù)據(jù)庫(kù)成功啟動(dòng),通過(guò)單擊“http:// localhost:7474”鏈接訪問(wèn)Neo4j瀏覽器來(lái)觀察我們的數(shù)據(jù)。


http:// localhost:7474


第9步 -在Neo4j數(shù)據(jù)瀏覽器的$ 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


在數(shù)據(jù)瀏覽器中查看結(jié)果


觀察Eclipse IDE結(jié)果
如果我們觀察Eclipse IDE結(jié)果和Neo4j數(shù)據(jù)瀏覽器的結(jié)果,兩者都是正確的。


注意 -

像這樣,我們可以使用Neo4j JAVA API執(zhí)行任何CQL命令。

如果我們的Neo4j服務(wù)器通過(guò)引用我們新創(chuàng)建的數(shù)據(jù)庫(kù)啟動(dòng)和運(yùn)行,那么我們不能執(zhí)行我們的程序,因?yàn)榉?wù)器已經(jīng)鎖定了這個(gè)數(shù)據(jù)庫(kù)。

所以當(dāng)我們執(zhí)行我們以前的程序時(shí),我們會(huì)得到一些錯(cuò)誤堆棧跟蹤


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


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

因?yàn)槟J(rèn)情況下Neo4j DB Server一次只接受一個(gè)鎖。 在實(shí)時(shí)應(yīng)用程序中,Ne04J DBA人員將更新數(shù)據(jù)庫(kù)屬性以允許一次允許一些數(shù)量的鎖。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)