2015-09-09 86 views
0

我是neo4j的新手,我想創建一個應用程序。以嵌入式數據庫方式播放neo4j

通過遠程服務器模式,似乎只有REST API可用於連接到neo4j。 所以我決定使用嵌入式數據庫,因爲我想使用neo4j提供的JAVA API。

有教程的例子來創建連接:

private static final String DB_PATH = "C:/Users/Hao/Documents/Neo4j/TGI_test_backup"; 

public static void main(String[] args) throws IOException 
{ 
    FileUtils.deleteRecursively(new File(DB_PATH)); 
    GraphDatabaseService database = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH); 
    GraphDatabaseService database = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH); 
    TraversalExample example = new TraversalExample(database); 
    Node joe = example.createData(); 
    example.run(joe); 
} 

public TraversalExample(GraphDatabaseService db) 
{ 
    this.db = db; 
    // START SNIPPET: basetraverser 
    friendsTraversal = db.traversalDescription() 
      .depthFirst() 
      .relationships(Rels.KNOWS) 
      .uniqueness(Uniqueness.RELATIONSHIP_GLOBAL); 
    // END SNIPPET: basetraverser 
} 

private Node createData() 
{ 
    String query = "CREATE (joe {name: 'Joe'}), (sara {name: 'Sara'}), " 
     + "(lisa {name: 'Lisa'}), (peter {name: 'PETER'}), (dirk {name: 'Dirk'}), " 
        + "(lars {name: 'Lars'}), (ed {name: 'Ed'})," 
     + "(joe)-[:KNOWS]->(sara), (lisa)-[:LIKES]->(joe), " 
     + "(peter)-[:KNOWS]->(sara), (dirk)-[:KNOWS]->(peter), " 
     + "(lars)-[:KNOWS]->(drk), (ed)-[:KNOWS]->(lars), " 
     + "(lisa)-[:KNOWS]->(lars) " 
     + "RETURN joe"; 
    Result result = db.execute(query); 
    Object joe = result.columnAs("joe").next(); 
    if (joe instanceof Node) 
    { 
     return (Node) joe; 
    } 
    else 
    { 
     throw new RuntimeException("Joe isn't a node!"); 
    } 
} 

似乎我每次運行此代碼時,它會創建一個新的數據庫實例,而且所有存在的數據將被覆蓋。

但數據需要保存,我不會所有的數據導入到數據庫中的代碼...

如何解決這個問題呢?我需要的是連接到數據庫並使用已有的數據。

謝謝。

回答

2

您看到main的第一行,即FileUtils.deleteRecursively(new File(DB_PATH));?它會爲您的DBPATH創建一個File對象,然後它將遞歸地刪除所有內容。這相當於在文件資源管理器中選擇數據庫目錄並將其刪除。因此,首先要從代碼中刪除該行,並確定每次連接到現有數據庫時是否刪除並重新創建數據庫。

0

我只是爲你的問題添加我的兩分錢。

您可以將Neo4j服務器的REST API理解爲傳輸層。您可以使用它,也可以使用驅動程序。這些驅動程序正在使用REST API,但您不知道。你也可以使用JDBC。