如何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_AUTO
function,正如hibernate.hbm2ddl.auto = none
,但在后一种情况下,您会在日志中得到警告。
在hibernate.properties中
hibernate.hbm2ddl.auto=validate
当然,configuration它的地方取决于你configuration你的hibernate的方式 – 如果是编程方式,在那里设置属性。 如果是来自hibernate.cfg.xml:
<property name="hibernate.hbm2ddl.auto">validate</property>