【问题标题】:Hibernate hbm2ddl.auto default value [duplicate]休眠 hbm2ddl.auto 默认值 [重复]
【发布时间】:2012-05-24 21:14:09
【问题描述】:

什么是默认值

hibernate.hbm2ddl.auto

在hibernate cfg文件映射中

是否可以删除

<property name="hibernate.hbm2ddl.auto">update</property>

这个来自配置文件的映射

如果我删除此属性是否会影响我的数据库

???

【问题讨论】:

    标签: java mysql database hibernate


    【解决方案1】:

    只是省略 hibernate.hbm2ddl.auto 默认 Hibernate 不做任何事情。

    已经在 SO 中询问过。 link

    【讨论】:

      【解决方案2】:

      在创建 SessionFactory 时自动验证模式 DDL 或将其导出到数据库。使用 create-drop,当 SessionFactory 显式关闭时,数据库模式将被删除。

      validate | update | create | create-drop
      
      • 验证现有架构
      • 更新 - 仅在创建后更新架构
      • 每次都创建-创建架构

      【讨论】:

      • 我猜反对者是对这一事实做出反应,即这是来自休眠文档的逐字记录。我可以看出这可能会引起负面反应,尽管它并没有打扰我。
      • 没有阅读和回答问题(就像 rparree 所做的那样):如果你没有指定一个值会发生什么?
      • 作为@Jollymorphic sais,问题是:如果您不指定值会发生什么?
      • Validatehibernate.hbm2ddl.auto 的默认值
      • @SubhrajyotiMajumder from @raphaëλ's answer 看起来 Validate 不是默认值 - 如果您不指定值,则不会发生任何事情(甚至没有验证)。
      【解决方案3】:

      这就是答案:no 验证,no 更新,no 创建和 no 丢弃发生从配置中省略设置时。 hibernate 源代码是关于 Hibernate 的最佳文档:

      // from org.hibernate.cfg.SettingsFactory line 332 (hibernate-core-3.6.7)      
      String autoSchemaExport = properties.getProperty(Environment.HBM2DDL_AUTO);
      if ( "validate".equals(autoSchemaExport) ) settings.setAutoValidateSchema(true);
      if ( "update".equals(autoSchemaExport) ) settings.setAutoUpdateSchema(true);
      if ( "create".equals(autoSchemaExport) ) settings.setAutoCreateSchema(true);
      if ( "create-drop".equals(autoSchemaExport) ) {
        settings.setAutoCreateSchema(true);
        settings.setAutoDropSchema(true);
      }
      

      【讨论】:

      • 不公平地使用源代码来弄清楚里面发生了什么...... ;-)
      • :) 停止猜测。
      猜你喜欢
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 2017-02-13
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      • 2014-11-06
      相关资源
      最近更新 更多