在拖放向导中并行维护多个迁移文件 [英] Maintain multiple migration files in parallel in dropwizard

查看:25
本文介绍了在拖放向导中并行维护多个迁移文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Drop向导0.8.1应用程序,它使用多个(两个)支持Hibernate的数据库。然而,我希望将这两个数据库的迁移捆绑包彼此分开。

如何做到这一点?对于Hibernate包,我可以设置名称(),这样指标就不会用相同的名称注册两次,但似乎不可能为迁移设置文件名...

推荐答案

此功能已在DW 1.0.0中添加。 它当前未发布,因此您可能可以使用该快照。

来自GitHub当前Migrations.rst

将相关部分复制到此处:

支持添加多个迁移包

假设需要为两个不同的数据库执行迁移,则需要有两个不同的数据源工厂:

public class ExampleConfiguration extends Configuration {
@Valid
@NotNull
private DataSourceFactory database1 = new DataSourceFactory();

@Valid
@NotNull
private DataSourceFactory database2 = new DataSourceFactory();

@JsonProperty("database1")
public DataSourceFactory getDb1DataSourceFactory() {
    return database1;
}

@JsonProperty("database2")
public DataSourceFactory getDb2DataSourceFactory() {
    return database2;
}
}

现在可以添加具有唯一名称的多个迁移包,如下所示:

@Override
public void initialize(Bootstrap<ExampleConfiguration> bootstrap) {
    bootstrap.addBundle(new MigrationsBundle<ExampleConfiguration>() {
        @Override
        public DataSourceFactory getDataSourceFactory(ExampleConfiguration configuration) {
            return configuration.getDb1DataSourceFactory();
        }

        @Override
        public String name() {
            return "db1";
        }
    });

    bootstrap.addBundle(new MigrationsBundle<ExampleConfiguration>() {
        @Override
        public DataSourceFactory getDataSourceFactory(ExampleConfiguration configuration) {
            return configuration.getDb2DataSourceFactory();
        }

        @Override
        public String name() {
            return "db2";
        }
    });
}

迁移架构:

java -jar hello-world.jar db1 migrate helloworld.yml

java -jar hello-world.jar db2 migrate helloworld.yml

注意:

无论何时将名称添加到迁移包中,它都会成为需要在命令行运行的命令。例如:要检查数据库的状态,请使用状态命令:

java -jar hello-world.jar db1 status helloworld.yml

java -jar hello-world.jar db2 status helloworld.yml
默认情况下,迁移包使用"db"命令。通过覆盖,您可以对其进行定制,以提供您想要的任何名称,并拥有多个迁移包。无论在哪里使用"db"命令,都可以使用此自定义名称。

还需要提供不同的更改日志迁移文件。这可以通过

来完成
java -jar hello-world.jar db1 migrate helloworld.yml --migrations <path_to_db1_migrations.xml>
java -jar hello-world.jar db2 migrate helloworld.yml --migrations <path_to_db2_migrations.xml>

这篇关于在拖放向导中并行维护多个迁移文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆