Wie aus hbm2ddl drehen?
Frage
Ich konnte keinen Hinweis finden, wie hbm2ddl auszuschalten.
Lösung
Just Weglassen hibernate.hbm2ddl.auto
standardmäßig Hibernate nichts zu tun. Von der Referenzdokumentation:
1.1.4. Hibernate Konfiguration
Die
hbm2ddl.auto
Option schaltet automatische Generierung von Datenbank Schemata direkt in die Datenbank. Dies kann auch durch Entfernen der Konfigurationsoption ausgeschaltet werden, oder mit Hilfe in eine Datei umgeleitet die Schema Ant-Task.
Einstellung hbm2ddl.auto
zu none
(undokumentiert) möglicherweise eine Warnung erzeugen, wie zum Beispiel: org.hibernate.cfg.SettingsFactory - Unrecognized value for "hibernate.hbm2ddl.auto": none
Andere Tipps
Sie können es ausschalten, indem Sie:
hibernate.hbm2ddl.auto=none
Es ist nicht dokumentiert, aber von unschätzbarem Wert!
Um dies eine klare, eine in die Quelle der org.hibernate.cfg.SettingsFactory
aussehen sollte (Sie etwas anderes, abhängig von der Version sehen kann verwendet):
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 );
}
In der org.hibernate.cfg.Settings
Klasse werden diese Variablen initialisiert, wie:
private boolean autoCreateSchema;
private boolean autoDropSchema;
private boolean autoUpdateSchema;
private boolean autoValidateSchema;
so dieser Standard auf false gesetzt.
Das Weglassen der hibernate.hbm2ddl.auto
Einstellung sollte die HBM2DDL_AUTO
Funktionalität abschalten wie hibernate.hbm2ddl.auto = none
vorgeschlagen würde, aber auf letzterem Fall erhalten Sie eine Warnung im Protokoll.
in hibernate.properties
hibernate.hbm2ddl.auto=validate
Natürlich ist der Ort zu konfigurieren, dass auf dem Weg ab, die Sie Ihren Hibernate konfigurieren - wenn es programmatisch ist, legen Sie die Eigenschaft gibt. Wenn es von hibernate.cfg.xml ist:
<property name="hibernate.hbm2ddl.auto">validate</property>
Wenn Sie einen nicht unterstützten Wert eingeben wird es Ihnen sagen, welche unterstützt werden:
o.h.b.i.SessionFactoryBuilderImpl : Unrecognized hbm2ddl_auto value : bla. Supported values include 'create', 'create-drop', 'update', 'none' and 'validate'. Ignoring
Und der Wert none
wird der Standard wird offiziell unterstützt und dokumentiert:
https://docs.jboss.org/ Hibernate / ORM / Strom / -Nutzerhandbuch / html_single / Hibernate_User_Guide.html # Konfigurationen-hbmddl
Diese Eigenschaft ist nicht erforderlich. Nur löschen Sie den Eintrag hibernate.hbm2ddl.auto
vollständig aus der XML-Datei.