读完Hibernate之后:hbm2ddl.auto=正在生产中更新吗?出现了一些问题。首先,我使用Hibernate的原因是要与数据库供应商无关(无需编写10个版本的“相同” sql查询,例如tsql vs. sql)。
我的问题是在创建数据库架构(生产环境)时出现的。据我所知,我有两种选择。
在上面的主题中广泛讨论了第一种选择。第二种选择很糟糕,因为这意味着我回到了第一个问题:“不想创建依赖于数据库供应商的sql语句”。(如果“全部”(最后是Hibernate支持的数据库)正在实现DDL(用于定义和检查数据库结构的SQL子集。)相等,则此语句可能为假)。
在开发/登台模式中进行所有更改,并手动(或自动)在生产环境中传输和执行脚本,但不要让hibernate模式运行它们。脚本可能需要进行一些调整,因为hbm2ddl更新无法涵盖所有情况。
实际上,我从未让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=;