如何强制多个 hbm2ddl 执行分别 运行?

How to force multiple hbm2ddl executions to run separatedly?

我们将 JavaEE 应用程序部署为多个 Wildfly 服务器中的 WAR。作为持久性框架,我们使用 JPA 和 Hibernate 作为实现。

为了保证与我们的实体匹配的 DB-Schema-类 我们在 persistence.xml 中有以下条目:

<property name="hibernate.hbm2ddl.auto" value="update" />

这现在用于维护高度易变的 DB-schema 是最新的,因为我们的领域模型目前还远未稳定。

如果我们在单个服务器实例中部署,比如说 2 个 WAR(包含相同的实体),则两个 WAR 都将尝试更新 DB-schema。我们通过 Ansible 复制任务进行部署,这导致从两个 WAR 并行启动并并行执行两个 hbm2ddl 执行,这给了我们错误。

现在的问题是,是否有 Hibernate 内置方法来禁止通过 hbm2ddl 并行执行架构迁移?

没有。您应该考虑使用 Flyway 或 Liquibase 等工具来迁移您的数据库。