在哪里执行Flyway.migrate()?

时间:2016-06-22 07:11:50

标签: hibernate jax-rs flyway

我正在使用Hibernate JPA开发我的JAX-RS应用程序,使用hibernate.hbm2ddl.auto='create-drop'之类的设置在postgresql db中创建表。

显然,这在生产中是灾难性的。

最近,我发现了Flyway,并想尝试一下。它有一些迁移变更的方法,比如命令行或API。

如果我没有弄错,命令行方法要求我单独执行更改,而API方法将自动执行迁移。但是,JAXRS应用程序中的main函数在哪里?

希望我的问题足够明确。

1 个答案:

答案 0 :(得分:2)

Flyway Docs中所述,您可以使用API​​方法开始迁移,如:

Flyway flyway = new Flyway();
flyway.setDataSource(...);
flyway.migrate();

唯一必要的是在Web应用程序初始化过程中运行此代码段。使用标准的Servlet方法,例如:

@WebListener
public class AppStartupListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent event) {
        Flyway flyway = new Flyway();
        // configure datasource
        flyway.setDataSource(...);
        flyway.migrate();
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {}

}

希望这会有所帮助。

相关问题