我们在Java /
Hibernate项目中遇到了同样的问题,并且不需要任何代码复制工作。hibernate的“更新”功能根本不可靠,Liquidbase更好,但也不是100%可靠的。最后,我们开发了一个简单的脚本来管理以下过程:
- Hibernate总是直接针对DEV数据库由“当前”数据库模式生成。
- 一系列Liquibase变更集生成“先前”数据库架构。
- 每次需要迁移时,都会在“先前”数据库和“当前”数据库(两个实际的数据库,是的,这样更可靠)之间调用Liquibase的“ diff”函数,从而生成新的Liquibase变更集。
- 此更改集需要手动检查。所有更改集都保留在源代码控制中。
- PRODUCTION数据库具有通过应用所有Liquibase变更集生成的架构。
我们脚本中的键盘命令如下所示:
${LIQB_COMMAND} ${PREV_DB_OPTIONS} --changeLogFile=${LIQB_CHGLOG_FILE_NEW} diffChangeLog --referenceUsername=${DEV_DB_USER} --referencePassword=${DEV_DB_PWD} --referenceDriver=com.mysql.jdbc.Driver --referenceUrl=${DEV_DB_URL}这样,我们的迁移过程非常可靠,您无需编写模式代码两次。可以手动检查XML中生成的更改集,但是大多数时候都没有问题,而且与手动编写模式更改操作相比,它肯定容易得多。



