java - 如何使用 Hibernate 创建数据库模式

标签 java database hibernate hbm2ddl

看完Hibernate: hbm2ddl.auto=update in production?出现了一些问题。 首先,我使用 Hibernate 的原因是独立于数据库供应商(无需编写 10 个版本的“相同”sql 查询,例如 tsql 与 sql)。

当创建数据库模式(生产环境)时,我的问题出现了。据我所知,我有两种选择。

  1. hbm2dll = 更新
  2. 纯 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/

相关文章:

java - Java 中的 FileSystemWatcher - 删除正在监视的目录

java - 如何使用android sqlite数据库更新一行中的多列?

java - 我正在使用 Live sdk 将文件上传到 One Drive,并收到来自 google 的警报 :

Java泛型名称冲突,具有相同的删除

c++ - C++ SQL解析器到表

sql - 将两列中的动态值拆分为多列 - 删除重复项

java - 我需要在 Hibernate 中手动创建关系表吗?

java - 无法使用 Hibernate Spatial 将点插入 mysql 数据库

java - hibernate/webapp 上下文中的对象相等性

JAVA UML 接口(interface)多继承错误或错误?