我试图在我的应用程序运行的飞行用Hibernate是挂钩在我的JBoss AS 7.1之前。 我试图用@javax.ejb.Startup
注解,但这被执行后,Hibernate的初始化和数据库方案被选中。
所以,据我了解,我们可以使用一个CDI扩展Hibernate的初始化之前鱼钩英寸 有没有说出来的箱子飞行用一些支持? 如果没有,有没有人尝试过这样做呢?
我试图在我的应用程序运行的飞行用Hibernate是挂钩在我的JBoss AS 7.1之前。 我试图用@javax.ejb.Startup
注解,但这被执行后,Hibernate的初始化和数据库方案被选中。
所以,据我了解,我们可以使用一个CDI扩展Hibernate的初始化之前鱼钩英寸 有没有说出来的箱子飞行用一些支持? 如果没有,有没有人尝试过这样做呢?
好吧,我终于找到了如何做到这一点:我不得不使用Hibernate 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
}
}
如果有人有兴趣了解更多的细节,我创建这表明一个github上的项目: https://github.com/dobermai/Hibernate-Flyway-Integration
CDI限定应用启动时执行其自己的生命周期/停止。 (你不应该已经知道了: 这是了解的基本机制的好地方。)
这个问题 - 我所知 - 是Hibernate的初始化过程不直接链接到CDI启动。 这意味着,我不知道,如果它的安全依赖于休眠与CDI“事件”之间的关系。 当然是有没有像CDI-事件HibernateInitialized
。
话虽如此,我想给它一个尝试:)你应该执行一个简单的扩展,在勾搭BeforeBeanDiscovery
,这是早,因为它得到。
这网上的介绍提供了有关不同CDI事件及其秩序的概述。 它在德国,很遗憾。