是否有CDI的Flyway扩展?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (42)

我试图在我的应用程序中运行flyway,然后hibernate挂在我的JBoss AS 7.1上。我尝试了一个@javax.ejb.Startup注释,但是这会在Hibernate初始化并且数据库方案被检查后执行。

所以据我所知,我们可以使用在Hibernate初始化之前挂接的CDI扩展。flyway有没有一些开箱即用的支持?

提问于
用户回答回答于

使用Hibernate Integration API。这是我必须写的整个代码:

public class FlywayIntegrator implements Integrator {

  @Override
  public void integrate(final Configuration configuration, final SessionFactoryImplementor sessionFactoryImplementor, final SessionFactoryServiceRegistry sessionFactoryServiceRegistry) {
    final Flyway flyway = new Flyway();

    flyway.setDataSource(....);
    flyway.migrate();
  }

  @Override
  public void integrate(final MetadataImplementor metadataImplementor, final SessionFactoryImplementor sessionFactoryImplementor, final SessionFactoryServiceRegistry sessionFactoryServiceRegistry) {
    //no-op
  }

  @Override
  public void disintegrate(final SessionFactoryImplementor sessionFactoryImplementor, final SessionFactoryServiceRegistry sessionFactoryServiceRegistry) {
    //no-op
  }
}
用户回答回答于

CDI定义了当应用程序启动/停止时执行的自己的生命周期。

Hibernate初始化过程不直接链接到CDI启动。这意味着我不确定它是否安全依赖于Hibernate和CDI“事件”之间的关系。肯定没有像CDI事件HibernateInitialized

扫码关注云+社区

领取腾讯云代金券