如何closureshbm2ddl?

我找不到关于如何closureshbm2ddl的参考。

只是省略hibernate.hbm2ddl.auto默认为Hibernate不做任何事情。 从参考文件:

1.1.4。 hibernateconfiguration

hbm2ddl.auto选项将自动生成数据库模式直接打开到数据库中。 这也可以通过删除configuration选项来closures ,或者在SchemaExport Ant任务的帮助下redirect到一个文件。

hbm2ddl.auto设置为none (无文档)可能会生成警告,例如: org.hibernate.cfg.SettingsFactory - Unrecognized value for "hibernate.hbm2ddl.auto": none

您可以通过以下方式将其closures:

 hibernate.hbm2ddl.auto=none 

这是无证的,但无价的!

为了清楚这一点,我们应该查看org.hibernate.cfg.SettingsFactory的源代码(根据所使用的版本,你可能会看到其他的东西):

 String autoSchemaExport = properties.getProperty( AvailableSettings.HBM2DDL_AUTO ); if ( "validate".equals(autoSchemaExport) ) { settings.setAutoValidateSchema( true ); } else if ( "update".equals(autoSchemaExport) ) { settings.setAutoUpdateSchema( true ); } else if ( "create".equals(autoSchemaExport) ) { settings.setAutoCreateSchema( true ); } else if ( "create-drop".equals( autoSchemaExport ) ) { settings.setAutoCreateSchema( true ); settings.setAutoDropSchema( true ); } else if ( !StringHelper.isEmpty( autoSchemaExport ) ) { LOG.warn( "Unrecognized value for \"hibernate.hbm2ddl.auto\": " + autoSchemaExport ); } 

org.hibernate.cfg.Settings类中,这些variables被初始化为:

 private boolean autoCreateSchema; private boolean autoDropSchema; private boolean autoUpdateSchema; private boolean autoValidateSchema; 

所以这些默认为false。

省略hibernate.hbm2ddl.auto设置应该closuresHBM2DDL_AUTOfunction,正如hibernate.hbm2ddl.auto = none ,但在后一种情况下,您会在日志中得到警告。

在hibernate.properties中

 hibernate.hbm2ddl.auto=validate 

当然,configuration它的地方取决于你configuration你的hibernate的方式 – 如果是编程方式,在那里设置属性。 如果是来自hibernate.cfg.xml:

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