1. 程式人生 > >neo4j的入門示例

neo4j的入門示例

下面是引導你建立第一個Neo4j應用程式的一些文件,讓你熟悉一下圖形資料庫Neo4j的基本概念。這裡我是以eclipse為IDE來做示範。
1.首先到官方網站上下載Neo4j,把它的jar包匯入你的專案裡。做法是:右擊你的專案->Build Path->Add External Archives…,然後把下載下來的jar包匯入,例如我匯入我下載的neo4j-1.3.M04-windows的neo4j-1.3.M04目錄下lib資料夾裡的所有jar
包。新建一個java專案,並建立一個package(如org.neo4j.example.helloworld)。

2.初始化並建立一個EmbeddedGraphDatabase例項。
你可以通過建立一個EmbeddedGraphDatabase例項來開始啟動Neo4j資料。EmbeddedGraphDatabase的建構函式需要一個目錄作為引數,來放置儲存資料的檔案。如果這個目錄不存在,則會在JVM當前的工作目錄下建立。
一個Neo4j圖包括三個基本元素:節點,節點間的關係,節點的屬性和關係的屬性。對於我們的例子,我們只需要一種關係型別,就是按照下面的方法來定義:
public enum MyRelationshipTypes implements RelationshipType{
        KNOWS
    }
然後我們像下面這樣把Neo4j嵌入到應用程式裡:  
GraphDatabaseService graphDb=new EmbeddedGraphDatabase("var/base");
        當建構函式返回時,Neo4j就開始啟動了並立刻裝載在var/base目錄下的所有資料檔案。還有一點必須牢記,就是在應用程式結束前必須關閉Neo4j:
graphDb.shutdown();
        
3.把一切都封裝成事務
在Neo4j裡事務處理是非常簡單的:
Transaction tx=graphDb.beginTx();
        try{
            //所有Neo4j資料庫的操作
               tx.success();
        }
        finally{
            tx.finish();
            graphDb.shutdown();
        }
4.建立一張圖
   下面我們要先建立兩個節點,一種關係和賦予一些屬性。
Node firstNode=graphDb.createNode();//建立第一個節點
Node secondNode=graphDb.createNode();//建立第二個節點
//節點firstNode通過createRelationshipTo函式跟節點secondNode建立KNOWS聯絡
Relationship relationship=firstNode.createRelationshipTo(secondNode, MyRelationshipTypes.KNOWS);

firstNode.setProperty("message", "Hello,");//設定“鍵-值”這樣型別的屬性
secondNode.setProperty("message","world!");
relationship.setProperty("message","brave Neo4j ");

5.讀取圖的資訊
System.out.print(firstNode.getProperty("message"));
System.out.print(relationship.getProperty("message"));
System.out.print(secondNode.getProperty("message"));


附完整原始碼:
package org.neo4j.example.helloworld;

import org.neo4j.graphdb.*;
import org.neo4j.kernel.EmbeddedGraphDatabase;
/*
* Example class that constructs a simple graph with 
* message attributes  and then prints them.
*/
public class NeoTest {

    public enum MyRelationshipTypes implements RelationshipType{
        KNOWS
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        GraphDatabaseService graphDb=new EmbeddedGraphDatabase("var/base");
        
        Transaction tx=graphDb.beginTx();
        try{
            Node firstNode=graphDb.createNode();
            Node secondNode=graphDb.createNode();
            Relationship relationship=firstNode.createRelationshipTo(secondNode, MyRelationshipTypes.KNOWS);
            
            firstNode.setProperty("message", "Hello,");
            secondNode.setProperty("message","world!");
            relationship.setProperty("message","brave Neo4j ");
            tx.success();
            
            System.out.print(firstNode.getProperty("message"));
            System.out.print(relationship.getProperty("message"));
            System.out.print(secondNode.getProperty("message"));
            
        }
        finally{
            tx.finish();
            graphDb.shutdown();
        }
    }

}