假设您正在使用 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/