【问题标题】:Where to execute Flyway.migrate()?在哪里执行 Flyway.migrate()?
【发布时间】:2016-10-23 23:26:32
【问题描述】:

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

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

最近,我发现了 Flyway,并想尝试一下。它有几种方法来迁移更改,例如命令行或 API。

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

希望我的问题足够清楚。

【问题讨论】:

    标签: hibernate jax-rs flyway


    【解决方案1】:

    正如Flyway Docs 中所说,您可以使用 API 方法来开始迁移,例如:

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

    唯一需要做的是在 Web 应用程序初始化过程中运行这段代码 sn-p。为此使用标准 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) {}
    
    }
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-11-28
      • 1970-01-01
      • 2016-04-22
      • 2020-04-10
      • 1970-01-01
      • 2018-02-02
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多