database - 如何使用 Hibernate 更新数据库模式而不丢失数据?

标签 database hibernate schema migrate

假设您正在使用 Hibernate 和 JBoss 开发 Java EE 应用程序。您有一个正在运行的服务器,上面有一些重要数据。您偶尔(1-2 周)发布应用程序的下一个版本,它们在持久层中有很多更改:

  • 新实体
  • 删除的实体
  • 属性类型变化
  • 属性名称更改
  • 关系变化

您如何有效地建立更新数据库模式和保存数据的系统?据我所知(我可能会误会),Hibernate 不执行更改列、删除/更改约束。

谢谢, Artem B.

最佳答案

LiquiBase是你最好的选择。它有一个 hibernate integration使用 Hibernate 的 hbm2ddl 来比较你的数据库和你的 hibernate 映射的模式,但不是自动更新数据库,它输出一个 liquibase 变更日志文件,可以在实际运行之前检查它。

虽然更方便,但任何比较数据库和 hibernate 映射的工具都会出错。参见 http://www.liquibase.org/2007/06/the-problem-with-database-diffs.html举些例子。使用 liquibase,您可以在开发时建立一个数据库更改列表,这种格式可以通过分支和合并保留代码。

关于database - 如何使用 Hibernate 更新数据库模式而不丢失数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/737989/

相关文章:

mysql - 如何处理 MySql 中一个类别下的唯一项目,其中项目在不同类别下可能不是唯一的?

在 Netbeans 中创建表时出现 Java DB 错误

java - 读取/更新时的 Hibernate 并发(?)问题

c# - 以编程方式创建 Oracle 数据库和架构 ADO.NET

sqlite - SQLite目录和架构设置(用于MyBatis生成器)

mysql - 有没有办法让mysql处理大量并发写入?

database - 对某些值进行特殊处理的 PL/SQL 过程 : UPDATE uppercase names to initcaps,

java - 获取动态数据库模型的静态类型(使用自动迁移)

java - 持久化对象时出现 NonUniqueObjectException

database-design - MongoDB RSS Feed 条目,将条目嵌入 Feed 对象中?