【发布时间】:2018-07-02 07:54:56
【问题描述】:
我们将 JavaEE 应用程序部署为多个 Wildfly 服务器中的 WAR。作为持久性框架,我们使用 JPA 和 Hibernate 作为实现。
为了保证与我们的实体类匹配的 DB-Schema,我们在 persistence.xml 中有以下条目:
<property name="hibernate.hbm2ddl.auto" value="update" />
这现在用于轻松维护高度易变的数据库模式,因为我们的领域模型目前远非稳定。
如果我们在单个服务器实例中部署 2 个 WAR(包含相同的实体),则两个 WAR 都将尝试更新 DB-schema。我们通过 Ansible 复制任务进行部署,这会导致两个 WAR 的并行启动和两个 hbm2ddl 执行的并行执行,这会给我们带来错误。
现在的问题是,有没有 Hibernate 内置的方法来禁止通过 hbm2ddl 并行执行架构迁移?
【问题讨论】:
-
没有。或许您应该考虑使用 Flyway 或 Liquibase 之类的工具来迁移您的数据库。
-
@SimonMartinelli 你应该发表评论作为答案,所以我可以接受。
-
完成谢谢!
标签: java hibernate jakarta-ee hbm2ddl