在本章中,我們將使用Neo4j Native Java API開發(fā)和測試Java應(yīng)用程序。 我們將在下一章討論Neo4j Cypher Java API。
在開發(fā)應(yīng)用程序之前,請(qǐng)參考“Neo4j Java環(huán)境設(shè)置”一章來設(shè)置Eclipse IDE來開發(fā)此應(yīng)用程序
此示例演示如何在Eclipse IDE中開發(fā)Java應(yīng)用程序以開發(fā)和測試Neo4j原生ava API示例
請(qǐng)按照“Neo4j Java環(huán)境設(shè)置”一章中提到的所有步驟操作
第1步 -在同一個(gè)Java項(xiàng)目中創(chuàng)建一個(gè)Java程序
第2步 -創(chuàng)建Neo4j數(shù)據(jù)庫
GraphDatabaseFactory dbFactory = new GraphDatabaseFactory(); GraphDatabaseService db= dbFactory.newEmbeddedDatabase("C:/TPNeo4jDB");
它在指定的路徑為我們創(chuàng)建一個(gè)Schema / Database,如下所示。這類似于Oracle SQL的“CREATE DATABASE”命令。
try (Transaction tx = graphDb.beginTx()) { // Perform DB operations tx.success(); }
所以對(duì)于你的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步 -要?jiǎng)?chuàng)建節(jié)點(diǎn),我們需要標(biāo)簽名稱。 通過實(shí)現(xiàn)Neo4j Java API“Label”接口創(chuàng)建一個(gè)枚舉。
package com.tp.ne4oj.java.examples; import org.neo4j.graphdb.Label; public enum Tutorials implements Label { JAVA,SCALA,SQL,NEO4J; }
第5步 -創(chuàng)建節(jié)點(diǎn)并為其設(shè)置屬性
創(chuàng)建兩個(gè)節(jié)點(diǎn)
Node javaNode = db.createNode(Tutorials.JAVA); Node scalaNode = db.createNode(Tutorials.SCALA);
設(shè)置屬性
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步 -要?jiǎng)?chuàng)建關(guān)系,我們需要關(guān)系類型。 通過實(shí)現(xiàn)Neo4j“關(guān)系類型”創(chuàng)建枚舉。
package com.tp.neo4j.java.examples; import org.neo4j.graphdb.RelationshipType; public enum TutorialRelationships implements RelationshipType{ JVM_LANGIAGES,NON_JVM_LANGIAGES; }
第7步 -創(chuàng)建節(jié)點(diǎn)之間的關(guān)系并設(shè)置它的屬性。
創(chuàng)建從Java節(jié)點(diǎn)到Scala節(jié)點(diǎn)的關(guān)系
Relationship relationship = javaNode.createRelationshipTo(scalaNode, TutorialRelationships.JVM_LANGIAGES);
將屬性設(shè)置為此關(guān)系
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步 -在執(zhí)行此Java程序之前,檢查您的Neo4j是否處于關(guān)閉模式。 如果沒有,請(qǐng)點(diǎn)擊“停止”按鈕展開它。
選擇我們的Neo4j數(shù)據(jù)庫文件夾,然后單擊“開始”按鈕
一旦此數(shù)據(jù)庫成功啟動(dòng),通過單擊“http:// localhost:7474”鏈接訪問Neo4j瀏覽器來觀察我們的數(shù)據(jù)。
第11步 -在Neo4j數(shù)據(jù)瀏覽器的$ prompt下鍵入以下命令
MATCH (a)-[r:JVM_LANGIAGES]->(b) RETURN r
單擊“Java”節(jié)點(diǎn)以查看其屬性
單擊“Scala”節(jié)點(diǎn)以查看其屬性
單擊關(guān)系以查看其屬性
注意 -
更多建議: