[英]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.