关于java:Hibernate hbm2ddl.auto默认值

Hibernate hbm2ddl.auto default value

本问题已经有最佳答案,请猛点这里访问。

什么是默认值

1
hibernate.hbm2ddl.auto

在hibernate cfg文件映射中

有可能删除

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

这个来自配置文件的映射

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

???


这就是答案:从配置中省略设置时,不进行验证,不进行更新,不进行创建,也不进行删除。 hibernate源代码是关于Hibernate的最佳文档:

1
2
3
4
5
6
7
8
9
// 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);
}


省略hibernate.hbm2ddl.auto默认为Hibernate没有做任何事情。

已经在SO中被问到了。 链接


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

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