Je veux vraiment en savoir plus sur la mise à jour, l'exportation et les valeurs qui peuvent être données à hibernate.hbm2ddl.auto
J'ai besoin de savoir quand utiliser la mise à jour et quand ne pas le faire ? Et quelle est l'alternative ?
Ce sont des changements qui pourraient se produire au cours de la DB :
Dans chaque cas, quelle est la meilleure solution ?
Extrait de la [documentation communautaire][1] :
hibernate.hbm2ddl.auto Valide ou exporte automatiquement le schéma DDL vers la base de données lorsque le SessionFactory est créé. Avec create-drop, le schéma de la base de données sera abandonné lorsque le SessionFactory sera explicitement fermé.
ex : validate | update | create | create-drop
La liste des options possibles est donc la suivante,
Ces options semblent destinées à être des outils pour les développeurs et non à faciliter la mise en place de bases de données de niveau production, vous pouvez consulter la question suivante : [Hibernate : hbm2ddl.auto=update in production ?][2].
[1] : https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#configurations-hbmddl [2] : https://stackoverflow.com/questions/221379/hibernate-hbm2ddl-autoupdate-in-production
La propriété de configuration s'appelle hibernate.hbm2ddl.auto
.
Dans notre environnement de développement, nous définissons hibernate.hbm2ddl.auto=create-drop
pour déposer et créer une base de données propre à chaque déploiement, afin que notre base de données soit dans un état connu.
En théorie, vous pouvez définir hibernate.hbm2ddl.auto=update
pour mettre à jour votre base de données avec les changements de votre modèle, mais je ne ferais pas confiance à cela sur une base de données de production. Une version antérieure de la documentation disait que c'était expérimental, au moins ; je ne connais pas le statut actuel.
Par conséquent, pour notre base de données de production, ne définissez pas hibernate.hbm2ddl.auto
- la valeur par défaut est de ne faire aucune modification de la base de données. Au lieu de cela, nous créons manuellement un script de mise à jour SQL DDL qui applique les changements d'une version à l'autre.
J'utiliserais [liquibase][1] pour la mise à jour de votre base de données. La fonction de mise à jour des schémas d'Hibernate n'est vraiment bonne que pour un développeur qui développe de nouvelles fonctionnalités. Dans une situation de production, la mise à jour de la base de données doit être gérée avec plus de précaution.
[1] : http://www.liquibase.org "liquibase" (en anglais)