Neo4j – 原生Java API

NO IMAGE

在本章中,我們將使用Neo4j Native Java API開發和測試Java應用程式。 我們將在下一章討論Neo4j Cypher Java API。

Neo4j原生Java API示例

此示例演示如何在Eclipse IDE中開發Java應用程式以開發和測試Neo4j原生ava API示例

請按照“Neo4j Java環境設定”一章中提到的所有步驟操作

第1步 -在同一個Java專案中建立一個Java程式

建立一個Java程式

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


第2步 -建立Neo4j資料庫

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

它在指定的路徑為我們建立一個Schema / Database,如下所示。這類似於Oracle SQL的“CREATE DATABASE”命令。


建立Neo4j資料庫


第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“Label”介面建立一個列舉。

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節點到Scala節點的關係

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是否處於關閉模式。 如果沒有,請點選“停止”按鈕展開它。


檢查Neo4j是否處於關閉模式


第10步 -執行Java程式並在Eclipse IDE控制檯中觀察輸出。

執行Java程式

選擇我們的Neo4j資料庫資料夾,然後單擊“開始”按鈕

Neo4j資料庫資料夾

一旦此資料庫成功啟動,通過單擊“http:// localhost:7474”連結訪問Neo4j瀏覽器來觀察我們的資料。

連結


第11步 -在Neo4j資料瀏覽器的$ prompt下鍵入以下命令

MATCH (a)-[r:JVM_LANGIAGES]->(b)
RETURN r


MATCH (a)-[r:JVM_LANGIAGES]-(b) RETURN r

單擊“Java”節點以檢視其屬性

檢視其屬性


單擊“Scala”節點以檢視其屬性

“Scala”節點


單擊關係以檢視其屬性

關係

注意 –

如果我們的Neo4j伺服器通過引用我們新建立的資料庫啟動和執行,那麼我們不能執行我們的程式,因為伺服器已經鎖定了這個資料庫。

所以當我們執行我們以前的程式時,我們會得到一些錯誤堆疊跟蹤

java.io.IOException:C:\TPNeo4jDB\lock because another process already holds the lock.

為了避免這個問題,首先停止我們的伺服器,然後執行程式。

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

轉自:http://www.w3cschool.cn/neo4j/neo4j_native_java_api_example.html