如何在Spring Applications中处理生产数据库的模式升级

使用Spring框架和hibernate在生产数据库上进行升级过程的最佳实践是什么?

你也可以在Flyway上做很多事: http : //flywaydb.org

比Liquibase简单得多。

您可以尝试使用Liquibase 。 它确实支持Hibernate

我的方法(我们运送的产品可能需要从版本5,10,15等旧版本升级)。

  • 对模式进行版本控制,并将每个版本的副本与当前模式一起保留
  • 在您将更新的版本安装到数据库表中的商店
  • 编写安装程序进程,计算从当前db版本 – >软件最新版本开始的升级步骤
  • 提供一种方法,用于为每个版本添加自定义升级步骤,以将表从旧架构迁移到新架构
  • 使所有自定义升级步骤重新运行,因为您无法处理某些此类内容(DDL)更改

可选

  • 有一个愚蠢的架构更新程序,可以更新您的表而不是数据,即重命名列,它将无法弄清楚如何处理旧数据(丢失)
  • 使用自定义升级步骤具有前后dumb-schema-updater步骤,第一个用于迁移哑更新程序将丢失/中断的重要数据,第二个用于在模式更新后修复任何数据。