Hibernate hbm2ddl.auto 默认值

34

默认值是什么?

hibernate.hbm2ddl.auto

在Hibernate的配置文件中映射,

是否有可能删除?

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

这是从配置文件中的映射。

如果我移除了这个属性,会影响我的数据库吗?

???

3个回答

50

这确实就是答案:不需要验证,不会更新、不会创建和不会删除,当你在配置中省略这个设置时。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);
}

16
不要用源代码来推断内部发生了什么...;-) - Dave
为了防止猜测。 - Tungata

28

省略hibernate.hbm2ddl.auto默认意味着Hibernate什么也不做。

已在SO中询问。 链接


16

当SessionFactory被创建时,可以自动验证或导出模式DDL到数据库。通过create-drop选项,当SessionFactory被显式关闭时,数据库模式将被删除。

validate | update | create | create-drop
  • 验证 - 验证现有模式
  • 更新 - 仅在创建模式后更新您的模式
  • 创建 - 每次创建模式

我猜测那个点踩者是在反应这段内容完全来自Hibernate文档。我可以理解为什么会引起负面反应,但这并不影响我。 - chad
7
如果不指定一个值会发生什么?(和rparree一样没有阅读并回答问题) - Jollymorphic
正如@Jollymorphic所说,问题是:如果您不指定值会发生什么? - user2447161
7
Validate жШѓ hibernate.hbm2ddl.auto зЪДйїШиЃ§еАЉгАВ - Subhrajyoti Majumder
3
根据@raphaëλ的回答,似乎“Validate”不是默认选项 - 如果你没有指定一个值,什么也不会发生(甚至没有验证)。 - Kent Munthe Caspersen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接