使用 Neo4j 和 Spring 进行数据库迁移
Database migrations with Neo4j and Spring
我有这种示例项目HERE
在那个示例数据中,我尝试使用Flyway来实现与neo4j数据库的数据库迁移。我可以使用 H2 数据库创建和插入普通 SQL(我在我的示例项目中使用了 H2 数据库),但我不知道如何使用 Neo4j 图形数据库实现它。
我需要在应用程序启动时初始化数据。这就是我尝试设置迁移代码的方式:
public class V1_1__InitMaster implements SpringJdbcMigration {
public void migrate(JdbcTemplate jdbcTemplate) throws Exception {
/*
//Example using h2 database
jdbcTemplate.execute("CREATE TABLE Unit ("
+ "code VARCHAR(30),"
+ "name VARCHAR(30),"
+ "value DOUBLE"
+ ");");
jdbcTemplate.execute("INSERT INTO Unit ('ft','Feet',1);");
//How I can save my init data to neo4j database in here?
for(String[] unitString : initDataMaster.unitList){
//I got list unitList here
}
*/
}
}
我阅读了这个 Page 关于可以使用 neo4j 管理数据库迁移的 flyway,并且我查看了一些解释 Flyway 与 Spring 和 Neo4j 集成的页面。
我问的是,如何保存我的初始化数据并使用 Flyway 管理它并与 Neo4j 和 Spring 集成?
编辑
引入了新的 Spring 引导启动器(仅适用于 Liquigraph 3.x)以完全与 Spring 引导一起使用,link最后仍然是现在的参考。
您所要做的就是使用启动器 liquigraph-spring-boot-starter
和 spring-boot-starter-jdbc
,启用自动配置(通过 @EnableAutoConfiguration
)并声明提供至少 liquigraph.url
application.properties
).
初始答案
Liquigraph 专为使用 Neo4j 管理迁移而设计。
根据您要支持的 Neo4j 版本,您可以选择 Liquigraph 2.x(对于 Neo4j 2.x)或 Liquigraph 3.x(对于 Neo4j 3.x)。
与 Spring 的集成非常简单,您可以将 DataSource or a JDBC URI(和 user/password)传递给配置生成器并以编程方式触发迁移 运行。
文档对此进行了描述 here(并非特定于 Spring,这是以编程方式 运行 迁移的不可知方式)。
配置可能如下所示(前提是您定义了 DataSource
此配置 class 可访问的某个位置):
@Configuration
class MigrationConfiguration {
@Bean
public MethodInvokingFactoryBean liquigraph(org.liquigraph.core.configuration.Configuration liquigraphConfig) {
MethodInvokingFactoryBean method = new MethodInvokingFactoryBean();
method.setTargetObject(new Liquigraph());
method.setTargetMethod("runMigrations");
method.setArguments(new Object[] {liquigraphConfig});
return method;
}
@Bean
public org.liquigraph.core.configuration.Configuration configuration(DataSource dataSource) {
return new ConfigurationBuilder()
.withDataSource(dataSource)
.withMasterChangelogLocation("changelog.xml")
.withRunMode()
.build();
}
}
完整示例在这里:https://github.com/fbiville/liquigraph-spring-boot-example。
我有这种示例项目HERE
在那个示例数据中,我尝试使用Flyway来实现与neo4j数据库的数据库迁移。我可以使用 H2 数据库创建和插入普通 SQL(我在我的示例项目中使用了 H2 数据库),但我不知道如何使用 Neo4j 图形数据库实现它。
我需要在应用程序启动时初始化数据。这就是我尝试设置迁移代码的方式:
public class V1_1__InitMaster implements SpringJdbcMigration {
public void migrate(JdbcTemplate jdbcTemplate) throws Exception {
/*
//Example using h2 database
jdbcTemplate.execute("CREATE TABLE Unit ("
+ "code VARCHAR(30),"
+ "name VARCHAR(30),"
+ "value DOUBLE"
+ ");");
jdbcTemplate.execute("INSERT INTO Unit ('ft','Feet',1);");
//How I can save my init data to neo4j database in here?
for(String[] unitString : initDataMaster.unitList){
//I got list unitList here
}
*/
}
}
我阅读了这个 Page 关于可以使用 neo4j 管理数据库迁移的 flyway,并且我查看了一些解释 Flyway 与 Spring 和 Neo4j 集成的页面。
我问的是,如何保存我的初始化数据并使用 Flyway 管理它并与 Neo4j 和 Spring 集成?
编辑
引入了新的 Spring 引导启动器(仅适用于 Liquigraph 3.x)以完全与 Spring 引导一起使用,link最后仍然是现在的参考。
您所要做的就是使用启动器 liquigraph-spring-boot-starter
和 spring-boot-starter-jdbc
,启用自动配置(通过 @EnableAutoConfiguration
)并声明提供至少 liquigraph.url
application.properties
).
初始答案
Liquigraph 专为使用 Neo4j 管理迁移而设计。 根据您要支持的 Neo4j 版本,您可以选择 Liquigraph 2.x(对于 Neo4j 2.x)或 Liquigraph 3.x(对于 Neo4j 3.x)。
与 Spring 的集成非常简单,您可以将 DataSource or a JDBC URI(和 user/password)传递给配置生成器并以编程方式触发迁移 运行。
文档对此进行了描述 here(并非特定于 Spring,这是以编程方式 运行 迁移的不可知方式)。
配置可能如下所示(前提是您定义了 DataSource
此配置 class 可访问的某个位置):
@Configuration
class MigrationConfiguration {
@Bean
public MethodInvokingFactoryBean liquigraph(org.liquigraph.core.configuration.Configuration liquigraphConfig) {
MethodInvokingFactoryBean method = new MethodInvokingFactoryBean();
method.setTargetObject(new Liquigraph());
method.setTargetMethod("runMigrations");
method.setArguments(new Object[] {liquigraphConfig});
return method;
}
@Bean
public org.liquigraph.core.configuration.Configuration configuration(DataSource dataSource) {
return new ConfigurationBuilder()
.withDataSource(dataSource)
.withMasterChangelogLocation("changelog.xml")
.withRunMode()
.build();
}
}
完整示例在这里:https://github.com/fbiville/liquigraph-spring-boot-example。