Je ne pouvais pas trouver une référence sur la façon de désactiver hbm2ddl.
En omettant simplement hibernate.hbm2ddl.auto
, Hibernate ne fait rien par défaut. De la documentation de référence:
1.1.4. Configuration Hibernate
L'option
hbm2ddl.auto
est activée génération automatique de base de données schémas directement dans la base de données . Cela peut également être désactivé en supprimant l'option de configuration, ou redirigé vers un fichier avec l'aide de la tâche Ant SchemaExport.
Définir hbm2ddl.auto
sur none
(non documenté) peut générer un avertissement, tel que: org.hibernate.cfg.SettingsFactory - Unrecognized value for "hibernate.hbm2ddl.auto": none
Vous pouvez l'éteindre en:
hibernate.hbm2ddl.auto=none
C'est sans papiers mais sans prix!
Pour que celui-ci soit clair, il faut regarder dans la source de org.hibernate.cfg.SettingsFactory
(vous pouvez voir quelque chose d'autre en fonction de la version utilisée):
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 );
}
Dans la classe org.hibernate.cfg.Settings
, ces variables sont initialisées comme suit:
private boolean autoCreateSchema;
private boolean autoDropSchema;
private boolean autoUpdateSchema;
private boolean autoValidateSchema;
alors ces valeurs par défaut sont false.
L'omission du paramètre hibernate.hbm2ddl.auto
devrait désactiver la fonctionnalité HBM2DDL_AUTO
comme le suggère hibernate.hbm2ddl.auto = none
, mais dans ce dernier cas, un avertissement apparaît dans le journal.
dans hibernate.properties
hibernate.hbm2ddl.auto=validate
Bien sûr, l'emplacement pour le configurer dépend de la façon dont vous configurez votre veille prolongée. Si c'est programmé, définissez la propriété à cet endroit. S'il s'agit de hibernate.cfg.xml:
<property name="hibernate.hbm2ddl.auto">validate</property>
Si vous entrez une valeur non prise en charge, elle vous indiquera celles qui sont prises en charge: o.h.b.i.SessionFactoryBuilderImpl : Unrecognized hbm2ddl_auto value : bla. Supported values include 'create', 'create-drop', 'update', 'none' and 'validate'. Ignoring
Et la valeur none
est la valeur par défaut, elle est officiellement supportée et documentée: https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#configurations-hbmddl
Cette propriété n'est pas obligatoire. Supprimez simplement l'entrée hibernate.hbm2ddl.auto
du fichier xml.