看完Hibernate: hbm2ddl.auto=update in production?出现了一些问题。 首先,我使用 Hibernate 的原因是独立于数据库供应商(无需编写 10 个版本的“相同”sql 查询,例如 tsql 与 sql)。
当创建数据库模式(生产环境)时,我的问题出现了。据我所知,我有两种选择。
- hbm2dll = 更新
- 纯 sql (ddl) 脚本。
第一个替代方案在上面的线程中被广泛讨论。 第二种选择不好,因为这意味着我回到了我的第一个问题:“不想创建依赖于数据库供应商的 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=;
关于java - 如何使用 Hibernate 创建数据库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/835961/