spring data neo4j使用现有的数据库

时间:2012-12-10 12:43:21

标签: neo4j spring-data spring-data-neo4j

我正在使用Spring Data Neo4j,在Spring中创建了一个应用程序。我可以在JUnit测试用例的帮助下运行我的应用程序。但每次运行我的测试用例时,它都会在使用<neo4j:config storeDirectory="target/neo4j-db"/>指定的目录路径中创建一个新数据库。这会在我的工作空间存在于Eclipse中的相​​同位置创建db。

我在我的ubuntu中安装了Neo4j debian软件包,默认情况下在/var/lib/neo4j/data/graph.db中有数据库。我希望我的应用程序使用此数据库,而不是在target/neo4j-db中创建该数据库。我尝试将target/neo4j-db替换为/var/lib/neo4j/data/graph.db并已授予读取和写入数据库的权限。但它不起作用。

这种配置有什么问题?我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

要针对Neo4j数据库运行JUnit测试,您有3个选择

  • 使用Neo4j使用的本地文件夹。为此,您必须在运行测试之前停止Neo4j服务器。如果您使用SpringJUnit4ClassRunner.class运行测试,并且希望确保在更改后未还原您的更改,则必须在所需的方法上放置@Rollback(false)。必须这样做是因为SpringJUnit4ClassRunner.class将回滚在测试期间对数据库所做的所有更改。
  • 使用 REST 方法(并再次使用@Rollback(false)的技巧获取SpringJUnit4ClassRunner.class)。为了使其与本地方法相反,您必须在运行测试之前启动Neo4j服务器。您还必须像下面这样配置xml文件:

    <neo4j:config graphDatabaseService="graphDatabaseService"/> <bean id="graphDatabaseService" class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase"> <constructor-arg value="http://localhost:7474/db/data/" index="0" /> </bean>

    • 您可以使用的最后一个选项是 Impermanent Graph数据库(这仅供参考,因为我怀疑这涵盖了您的情况)。此方法仅为运行测试而创建临时DB。测试完成后的所有内容都将被删除。如果Neo4j服务器正在运行,那么这项工作无关紧要。您只需在xml文件中添加以下两行:

    <neo4j:config graphDatabaseService="graphDatabaseService"/> <bean id="graphDatabaseService" class="org.neo4j.test.ImpermanentGraphDatabase" destroy-method="shutdown"/>