Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以嵌入式数据库方式播放neo4j_Java_Neo4j - Fatal编程技术网

Java 以嵌入式数据库方式播放neo4j

Java 以嵌入式数据库方式播放neo4j,java,neo4j,Java,Neo4j,我是neo4j的新手,我想创建一个应用程序 在远程服务器模式下,似乎只有RESTAPI可以用于连接neo4j。 所以我决定使用嵌入式数据库,因为我想使用neo4j提供的JavaAPI 本教程中有一个创建连接的示例: private static final String DB_PATH = "C:/Users/Hao/Documents/Neo4j/TGI_test_backup"; public static void main( String[] args ) throws IOExcep

我是neo4j的新手,我想创建一个应用程序

在远程服务器模式下,似乎只有RESTAPI可以用于连接neo4j。 所以我决定使用嵌入式数据库,因为我想使用neo4j提供的JavaAPI

本教程中有一个创建连接的示例:

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.deleteRecursive(新文件(DB_路径))?它为
DBPATH
创建一个
文件
对象,然后递归删除其中的所有内容。这相当于在文件资源管理器中选择数据库目录并将其删除。因此,第一件事是从代码中删除该行,并查看它是否会在每次连接到现有数据库时删除并重新创建数据库。

我只需为您的问题添加我的两分钱

您可以将Neo4j服务器的RESTAPI理解为传输层。您可以使用它,也可以使用驱动程序。这些驱动程序在底层使用RESTAPI,但您对此一无所知。也可以使用JDBC