【问题标题】:hbm2ddl.auto= create/create-drop will it remove data also?hbm2ddl.auto=create/create-drop 它也会删除数据吗?
【发布时间】:2017-11-18 20:05:45
【问题描述】:

在 Hibernate 中,如果我们将 hbm2ddl.auto 设置为 create/create-drop ,那么它会在启动时删除旧模式并创建新模式。这意味着,它也会删除数据?..我怀疑它是否会删除所有内容,那么我们如何检索旧数据? (例如:用户注册详细信息)以及在生产环境中应该使用什么正确选项?

如果我错了,请纠正我。

【问题讨论】:

  • 代替 DDL 检查 flyway 或 liquibase。
  • 如果您删除架构.....那么您会丢失数据,不是吗?
  • 使用update 在这种情况下它不会掉线
  • 这里有很好的解释 hibernate ddl stackoverflow.com/questions/438146/…

标签: java hibernate hbm2ddl


【解决方案1】:

它基本上会在关闭时删除 托管 实体表(不是所有的实体表),并在重新启动时重新创建它们。根据您的问题表示;是的,数据也会从表中删除。它不会删除整个架构,而只会删除实体管理器中的实体。

【讨论】:

    【解决方案2】:

    在生产环境中应该使用什么正确选项?

    恕我直言,生产环境的唯一有效选项是validate。由于配置错误、简单的错误或拼写错误,其他一切都可能导致丢失数据/破坏数据库模式的潜在风险。

    使用迁移工具进行架构更新,因为它们为您的架构提供“版本控制”,允许在部署之前对其进行测试,并还原更改。

    【讨论】:

    • 嗨,如果我想向数据库中的现有表添加新表和新列,那么 hbm2ddl.auto=validate 将适合(条件是不要触及现有的模式/表/数据?)
    • 直到你不在生产中你可以使用更新,在生产中使用只验证。更新添加新的列、表、索引,而不是删除你已经拥有的,现在不在映射中
    【解决方案3】:

    验证现有架构

    更新 - 仅在创建后更新您的架构

    create- 每次都创建架构。

    这里也有很好的解释Hibernate hbm2ddl.auto possible values and what they do?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-19
      • 2016-03-17
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2020-04-12
      相关资源
      最近更新 更多