簡體   English   中英

以嵌入式數據庫方式玩neo4j

[英]playing neo4j in embedded database way

我對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!" );
    }
}

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

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

如何解決這個問題? 我需要的是獲得與數據庫的連接並使用現有數據。

謝謝。

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

我只是為你的問題加上我的兩分錢。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM