首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Flyway的CDI扩展

Flyway的CDI扩展
EN

Stack Overflow用户
提问于 2012-06-17 21:57:18
回答 2查看 17.3K关注 0票数 21

在hibernate挂上我的JBoss AS7.1之前,我试着在我的应用程序中运行flyway。我尝试使用@javax.ejb.Startup注释,但在初始化Hibernate并检查数据库方案后执行。

因此,据我所知,我们可以使用在Hibernate初始化之前挂接的CDI扩展。对于flyway,是否有一些开箱即用的支持?如果没有,以前有没有人尝试过这样做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-19 17:57:21

好了,我终于知道该怎么做了:我必须使用Hibernate集成API。这是我不得不写的全部代码:

代码语言:javascript
复制
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
  }
}

如果有人对更多细节感兴趣,我创建了一个github项目来演示这一点:https://github.com/dobermai/Hibernate-Flyway-Integration

票数 38
EN

Stack Overflow用户

发布于 2012-06-19 04:17:54

CDI定义了自己的生命周期,该生命周期在应用程序启动/停止时执行。(您不应该已经知道了吗:This是一个学习基本机制的好地方。)

据我所知,问题在于Hibernate初始化过程与CDI启动没有直接联系。这意味着我不确定依赖Hibernate和CDI“事件”之间的关系是否安全。当然没有什么比CDI-Event HibernateInitialized更好的了。

话虽如此,我还是要试一试:)你应该实现一个简单的扩展,这个扩展挂接到BeforeBeanDiscovery上,越早越好。

This online presentation概述了不同的CDI事件及其顺序。很不幸,是用德语写的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11071821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档