阅读Hibernate之后:hbm2ddl.auto =在生产中更新?出现了一些问题.首先,我使用Hibernate的原因是独立于数据库供应商(不需要编写10个版本的"相同"sql查询,例如.tsql vs sql).
在创建数据库模式(生产环境)时出现我的问题.据我所知,我有两种选择.
hbm2dll =更新
纯sql(ddl)脚本.
在上面的主题中广泛讨论了第一种替代方案.第二种选择是坏的,因为这意味着我回到了第一个问题:"不想创建依赖于数据库供应商的sql语句".(如果"all"(数据库Hibernate支持)正在实现DDL(用于定义和检查数据库结构的SQL子集),则此语句可能为false .)相等).
在开发/暂存模式下进行所有更改,并手动(或自动,但不要让hibernate运行它们)在生产中传输和执行脚本.脚本可能需要一些调整,因为hbm2ddl update不包括所有情况.
实际上我从不让hibernate对任何数据库运行ddl.我使用hbm2ddl生成文本:
org.hibernate.tool.hbm2ddl.SchemaExport --config=hibernate.cfg.xml --text --format --delimiter=; org.hibernate.tool.hbm2ddl.SchemaUpdate --config=hibernate.cfg.xml --text --format --delimiter=;