Hibernate hbm2ddl.auto默认值

Ana*_*air 29 java mysql database hibernate

什么是默认值

hibernate.hbm2ddl.auto
Run Code Online (Sandbox Code Playgroud)

在hibernate cfg文件映射中

有可能删除

<property name="hibernate.hbm2ddl.auto">update</property>
Run Code Online (Sandbox Code Playgroud)

这个来自配置文件的映射

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

???

rap*_*aëλ 41

这就是答案:从配置中省略设置时,不进行验证,不进行更新,不进行创建,也不进行删除.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);
}
Run Code Online (Sandbox Code Playgroud)

  • 不公平使用源代码来弄清楚里面发生了什么...... ;-) (13认同)

Abh*_*ash 23

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

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


Sub*_*der 19

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

validate | update | create | create-drop
Run Code Online (Sandbox Code Playgroud)
  • 验证 - 现有架构
  • update-仅在创建后更新您的架构
  • 每次都创建 - 创建模式

  • 没有阅读和回答问题(正如rparree所做的那样):当你没有指定一个值时会发生什么? (5认同)
  • `Validate`是`hibernate.hbm2ddl.auto`的默认值 (5认同)
  • 来自@raphaëλ 的回答中的@SubhrajyotiMajumder 看起来“Validate”不是默认值——如果您不指定值,则不会发生任何事情(甚至没有验证)。 (2认同)