【问题标题】:Bootstrap EJB3 application before JPA / Hibernate startup在 JPA / Hibernate 启动之前引导 EJB3 应用程序
【发布时间】:2014-10-22 20:28:08
【问题描述】:

我有一个 EJB3 项目(JAR 的 EAR 打包,没有 WAR),我正在尝试将 Flyway(数据库迁移)集成到其中。

我尝试了几个选项来创建一个钩子,我可以在其中运行代码,然后 Hibernate 开始执行它的操作(绑定到实体等);

  • 使用@StartUp 注释。不幸的是,这会在 JPA 启动后运行。
  • ServletContextListener/@WebListener。但是当然你需要一个WEB-INF/ 目录才能工作。
  • 查看了使用 @DependsOn 注释来查看是否可以让类在 Hibernate 之前运行,但无法使其正常工作。
  • 我目前使用的是 Hibernate 3.6,因此无法选择使用 Hibernate 4(因此获得 Integrator API)。

我还有其他选择吗?

【问题讨论】:

    标签: hibernate jpa ejb-3.0 flyway


    【解决方案1】:

    我确实认为,如果您不想启动 JPA,则需要将 RESOURCE_LOCAL 事务与非 jta-datasource 一起使用。

    如果您使用任何类型的 JTA 事务,JPA 将被急切地调用。

    这样,JPA 只会在您启动事务时被调用,但您需要手动控制它。

    【讨论】:

      猜你喜欢
      • 2014-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多