如何在hibernate中第一次创建数据库模式,并在模式修改的情况下进一步更新它?

M S*_*ach 16 java hibernate hbm2ddl

我想第一次在hibernate中创建数据库模式.而且,如果模式中有任何修改,例如添加新表或删除某些列,我想更新现有模式,保持以前的数据不变.

根据此问题给出的选项,看起来我可以创建模式破坏以前的数据,或者我可以更新模式.

有什么价值可以兼得吗?

Jay*_*gar 29

实际上我刚刚检查过<property name="hibernate.hbm2ddl.auto" value="update" />甚至是第一次创建表,然后如果存在表/模式它会更新.

Update属性适用于启动或添加新模型.您希望保留先前保存的实体实例.这是默认的架构创建样式.

如果需要,它会尝试更新架构.支持以下更新:

看看我的一些观察

  • 添加字段 - 将新列添加到表中.
  • 重命名字段 - 将新列添加到表中,而原始列保留但不再使用.注意:旧列中的数据不会迁移到新列.
  • 删除字段 - 列保持但未使用.
  • 更改字段类型 - 列的类型不会更改,这可能会导致类型不匹配的异常.
  • 创建实体 - 创建新表.
  • 重命名实体 - 创建新表,同时保留原始表.
  • 将实体移动到另一个文件夹 - 创建一个新表,同时保留原始表.
  • 删除实体 - 表格保留.


Kri*_*ris 3

我不建议根据实体更改更新数据库架构。尝试使用FlywayLiquibase。您可以在 stackoverflow 上找到类似的问题,例如。Hibernate/JPA DB 架构生成最佳实践