【问题标题】:How to force multiple hbm2ddl executions to run separatedly?如何强制多个 hbm2ddl 执行分别运行?
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 在不久的将来,我们将使用 liquibase。
  • 不错的选择。我认为这两个框架都很棒。如果您使用纯 SQL,我会在所有其他情况下选择 flyway Liquibase
猜你喜欢
  • 2012-07-01
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
  • 2011-05-06
  • 2021-01-06
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多