我一直在使用hbm2ddl
和hbm2java
根据我的XML映射文件(hbm.xml)为我的项目构建数据库和POJO。我现在开始在系统中获得一些真实数据,因此重新运行我的ant脚本会丢弃数据库并重新创建所有内容不再是一个可行的选项,因为我想保留数据。我听说有一个hbm2ddl.auto功能可用于修改数据库结构而不删除数据,但我从s / o的一些答案中得知这不是最佳实践。
我的理解是您应该根据映射文件中的更改编写SQL DDL并针对数据库运行它。我想知道是否可以使用hbm2ddl根据映射文件生成此DDL。我也关注LiquiBase,但不确定这些是否适合我的情况,因为我希望继续使用hbm.xml文件作为关键数据定义源。
赞赏意见和建议 - 提前致谢!
答案 0 :(得分:0)
这可能不是在生产环境中执行此操作的最佳方式,但如果您不“与成千上万的用户共同生活”,请按以下步骤操作:
hibernate.hbm2dll
设置为update
(这是一个hibernate属性,在hibernate.cfg.xml
中设置,或者在spring配置中,如果你使用它)not null
的列应该分配default
,或者您应该进行手动UPDATE
查询。否则,您将获得运行时异常。答案 1 :(得分:0)
上周我问了同样的问题,我决定使用LiquiBase。这里有很多关于“Stack Overflow”的声明,它们阻止你在生产环境中使用hbm2ddl。我也是。
当我尝试添加唯一约束时,我遇到了hbm2ddl的功能限制,我意识到是时候选择更复杂的方法了。