Hibernate et la personnalisation des fichiers d’imports

Hibernate offre la possibilité de créer la structure d'un schéma de base de données directement à partir de la définition du mapping
(fichiers hbm ou annotations selon les goûts) en positionnant la propriété "hibernate.hbm2ddl.auto" à "create" ou "create-drop".

A la fin de la création de la structure de la base de données, Hibernate vérifie si un fichier "import.sql" est présent dans le classpath.
Si ce fichier est trouvé, les commandes SQL sont exécutées par le moteur hbm2dll.

Jusqu'à la version 3.5, il fallait que ce fichier s'appelle impérativement "import.sql".

Deux inconvénients à ce fonctionnement :

  • Impossibilité de découper/surcharger l'alimentation des données de la base dans différents fichiers
  • Volumétrie du fichier "import.sql"

Depuis la version 3.6 d'Hibernate, il est possible de personnaliser les fichiers d'imports.
Le nom du fichier d'import est personnalisable et il est possible d'importer de multiples fichiers.

Par défaut, Hibernate va rechercher la présence d'un fichier "import.sql".
Pour redéfinir ce comportement, il faut définir la propriété "hibernate.hbm2ddl.import_files".
Les fichiers à importer doivent être séparés par une virgule. L'ordre de définition de ces fichiers est important : c'est l'ordre dans
lequel le moteur hbm2dll les exécutera.

Exemple de configuration :

<property name="hibernateProperties">
  <props>
    <!--  Génère le schema de base -->
    <prop key="hibernate.hbm2ddl.auto">create</prop>
    <!--  Fichiers d'alimentation de données -->		
    <prop key="hibernate.hbm2ddl.import_files">/import-referentiel.sql,/import-dossiers.sql,/import-dataTest.sql</prop>
    <prop>...</prop>
  </props>
</property>

Résultat à l'exécution :

[INFO  (SchemaExport.java:234) Running hbm2ddl schema export
[INFO  (SchemaExport.java:262) exporting generated schema to database
[INFO  (SchemaExport.java:348) Executing import script: /import-referentiel.sql
[INFO  (SchemaExport.java:348) Executing import script: /import-dossiers.sql
[INFO  (SchemaExport.java:348) Executing import script: /import-dataTest.sql
[INFO  (SchemaExport.java:281) schema export complete

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.