java - 以嵌入式数据库方式玩neo4j

标签 java 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!" );
    }
}

似乎每次我运行这段代码时,它都会创建一个新的数据库实例,并且所有现有数据都将被覆盖。

但数据需要保存,我不会在代码中将所有数据导入数据库...

如何解决这个问题?我需要的是连接到数据库并使用现有数据。

谢谢。

最佳答案

您看到 main 的第一行,上面写着 FileUtils.deleteRecursively( new File( DB_PATH ) );?它为您的 DBPATH 创建一个 File 对象,然后递归地删除那里的所有内容。这相当于在文件资源管理器中选择数据库目录并将其删除。因此,第一件事是从您的代码中删除该行,看看是否每次连接到现有数据库时都删除并重新创建您的数据库。

关于java - 以嵌入式数据库方式玩neo4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32481736/

相关文章:

java - 如何使用Spring data JPA(JPARepository)实现延迟加载?

java - 如何设置 AWS SAM 本地 Lambda 函数的 ARN?

java - java 中的转义点。 (字符串转义实用程序)

java - 任何单元格获得数字 N 的最大移动次数

java - neo4j - 对于这种情况,独立服务器还是嵌入式服务器?

java - Amazon EC2 上的 Neo4j - 无法从远程机器访问

java - 为什么这些 Java 8 lambda 在类型转换期间表现不同?

java - 如何在 java 中删除/删除 Neo4j 中的节点和关系?

java - Neo4j StatementResult 太慢

Neo4j 3.2 Cypher 性能低下