当前位置: 首页 > 知识库问答 >
问题:

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

西门安宁
2023-03-14

我对neo4j很陌生,我想创建一个应用程序。

在远程服务器模式下,似乎只有RESTAPI可以用于连接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个答案

纪晨
2023-03-14

对于你的问题,我只加了两美分。

您可以将Neo4j服务器的REST API理解为传输层。您可以使用它,也可以使用驱动程序。这些驱动程序在下面使用REST API,但您不知道它。您也可以使用JDBC。

  • Neo4j OGM
  • Neo4j的Spring数据
  • JDBC驱动程序
益楷
2023-03-14

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

 类似资料:
  • 问题内容: 目前,我们使用HSQLDB作为嵌入式数据库,但是随着数据量的增长,我们将搜索内存占用更少的数据库。 Derby / JavaDB 目前无法选择,因为它在系统属性中全局存储属性。所以我们想到了h2。 当我们使用HSQLDB时,我们创建了一个Server对象,设置参数并启动它。这描述在这里(和如实施例中的类org.hsqldb.test.TestBase的给定)。 问题是:这也可以与h2数

  • 我正在构建一个将使用neo4j的web应用程序。我将在Java构建一个REST API,它将使用Neo4j嵌入式版本。这个架构有什么问题吗? 用别的方法好吗?Neo4j服务器? 谢谢!

  • 我有一个Spring Boot和嵌入式Mongo DB的项目,我也想查找存储在那里的数据。我学习了本教程https://springframework.guru/spring-boot-with-embedd-mongoDB/

  • 问题内容: 我打算开发一个小型(Java)应用程序来管理我的财务。我相信我需要使用嵌入式数据库,但是我没有关于此问题的经验。我试图查看一些可用的产品,但是我无法确定哪种产品更适合我。H2,HSQLDB,Derby和Berkeley DB似乎是不错的候选者,但是我仍然看不到它们之间的比较。感谢您的比较,并帮助我决定使用哪个。 我打算将Hibernate用于我的应用程序(除非您建议使用DBMS提供的A

  • 问题内容: 我正在寻找可以用于使用Qt开发的应用程序的良好嵌入式数据库。这些应用程序针对来自一家大型公司的各个站点的桌面用户。该数据库应能够在每个站点分别存储数据,并且该数据应在需要时与其他站点合并。 问题答案: 除了SQLite,以下任何一项都可以与Qt一起用作嵌入式数据库。Qt已经拥有大多数驱动程序,您可以找到其他驱动程序。在“与其他站点”合并数据方面,这完全取决于您的意思。用于SQLite和

  • 我正在尝试将嵌入式数据库derby与spring框架结合使用。我可以插入数据并读取它。除了数据库没有持久化之外,一切都很好。当我关闭应用程序并再次运行时,数据不存在。我猜数据库是再次创建的,但不知道为什么。 我的代码: 和Spring的输出日志是 create-db.sql内容是 解决方案:接受的答案指向正确的方向,但误差为db;create=true无法启动。然后,我查看了Netbeans ID