La liquibase est mieux utilisée en remplacement de hbm2ddl. De cette façon, vous pouvez avoir votre population de données lorsque la base de données est dans l'état qui correspond à ces données, et plus tard les changesets peuvent mettre à jour vos données insérées avec d'autres changements. Si vous exécutez hbm2ddl en premier, puis liquibase pour remplir les données, vous devrez toujours modifier la structure de vos données d'insertion. Une façon d'utiliser hibernate et liquibase est d'utiliser l'outil de comparaison de liquides liquibase sous ant ou maven pendant le développement pour l'ajouter à votre fichier changelog en fonction des différences entre votre base de données et votre modèle d'hibernation. Assurez-vous d'inspecter ce qu'il essaie de faire, car ce n'est pas toujours ce à quoi vous vous attendez (il décide d'abandonner et d'ajouter une colonne au lieu de le renommer). Une fois que votre fichier changelog a été créé, vous pouvez l'exécuter comme n'importe quel fichier changelog en le passant à la bombe de printemps liquibase au démarrage de l'application, par exemple. Vous n'avez pas besoin d'utiliser à la fois hbm2ddl et liquibase, car liquibase utilise hbm2ddl pour générer la "base de données" hibernate que liquibase compare à votre base de données actuelle.
Avec cela, vos étapes sont:
- Apporter des modifications à votre modèle de mise en veille prolongée
- Run liquibase diff entre mise en veille prolongée et votre base de données existante
- Contrôler votre changesets de liquibase
- exécuter votre script liquibase contre la base de données
Le seul problème peut être que le diff hibernate aussi Je ne peux pas être pris en charge dans maven comme il est dans la fourmi et la ligne de commande, en particulier dans 1.9.
Si vous ne voulez pas utiliser l'outil de comparaison de la liquibase, vous pouvez toujours ajouter manuellement changeSets au fichier changelog pour chaque modification. Le format XML est conçu pour être facile à manipuler manuellement. Dans ce cas, vos étapes sont:
- Apporter des modifications à votre modèle de mise en veille prolongée
- Ajouter REQUISES changeSet à votre fichier changelog
- exécuter votre script liquibase contre la base de données
- Test et répéter
Comment liquibase est-il supposé être déclenché dans votre configuration? –
Bonjour pascal! c'est un peu l'architecture complexe mais je ferai de mon mieux pour l'expliquer. c'est un projet 'maven + spring + hibernate' dans' 3 sous-projets'' 'dbleur',' servicelayer', et 'webapp'. Donc, disons le contexte' testdbconfig' pour les classes de test et il y a le vrai 'dbconfig' utilisé par la webapp. 'dblayer' fait les choses db donc j'utilise liquibase dans' spring'.'testdbconfig' sélectionne les propriétés des fichiers de propriétés dans le dossier des ressources (du projet dblayer) et, pour une raison quelconque, construit le dblayer avec' testdbconfig + liquibase + hsqldb + hbm2ddl = create' fonctionne. –
Tous les 'modules' (db + service) sont dans webapp pom donc leur contexte est importé dans' webbappconfig'. Le test d'intégration est exécuté avec de vraies configs et ces scripts de config sont dans le webapps.building le webapp avec une commande maven aussi exécute le test d'intégration qui utilise real configs.in webapp mêmes valeurs dans le fichier de propriétés pour dbconfig (pas testconfig) comme dans testconfig 'dbconfig + liquibase + hsqldb + hbm2ddl = create' ne semblent pas polir la db donc mon test d'intégration échoue.tried avec mysql et c'est seulement valider que laisser les données peuplées.Est-ce que je fais un bon travail expliquant? Merci d'avoir lu ce –