Question

Je recherche une solution générale pour la mise à niveau du schéma de base de données avec des outils ORM, tels que JPOX ou Hibernate. Comment faites-vous dans vos projets?

La première solution qui me vient à l’esprit est de créer mon propre mécanisme de mise à niveau des bases de données, avec des scripts SQL faisant tout le travail. Mais dans ce cas, je dois me rappeler de créer de nouveaux scripts chaque fois que les mappages d’objets sont mis à jour. Et je devrai toujours traiter les requêtes SQL de bas niveau, au lieu de simplement définir des mappages et de permettre aux outils ORM de faire tout le travail ...

La question est donc de savoir comment le faire correctement. Certains outils permettent peut-être de simplifier cette tâche (par exemple, j'ai entendu dire que Rails possède un tel mécanisme intégré). Dans l'affirmative, aidez-moi à choisir l'outil ORM à choisir pour mon prochain projet Java.

Était-ce utile?

La solution

LiquiBase est une bibliothèque open source intéressante pour la gestion des modifications de bases de données (mises à niveau). Je ne l'ai pas utilisé, mais j'essaierai certainement mon prochain projet pour lequel je dois mettre à niveau un schéma de base de données.

Autres conseils

Je ne vois pas pourquoi les schémas générés par ORM sont différents des autres schémas de base de données - le problème est le même. En supposant que votre ORM crache un script de génération, vous pouvez utiliser un outil externe pour faire la diff

Je ne l'ai pas essayé mais Google est revenu avec SQLCompare comme une option - je suis sûr qu'il y en a d'autres.

Nous codons les scripts de mise à jour SQL, nous les supprimons et les reconstruisons en les appliquant dans le cadre de notre processus de construction continu. Si des mappages de veille prolongée ne correspondent pas au schéma, la construction échouera.

DbMaintain peut également aider ici.

Vous pouvez vérifier cette comparaison des fonctionnalités de certains outils de mise à niveau du schéma de base de données.

Comparaison du nombre de questions dans l'EDT de certains de ces outils:

Je pense que votre meilleur choix est d'utiliser un outil ORM incluant une migration de base de données, tel que SubSonic :

http://subsonicproject.com/2-1-pakala/ migrations subsoniques /

Nous avons fini par créer des scripts de mise à jour chaque fois que nous avons modifié la base de données. Il existe donc un script de la version 10 à la version 11, de la 11 au version 12, etc. Nous pouvons ensuite exécuter n'importe quel ensemble de scripts consécutifs pour passer d'une version existante à la nouvelle version. Nous avons stocké la version existante dans la base de données afin de pouvoir la détecter au démarrage.

Oui, cela impliquait un code spécifique à la base de données! L'un des principaux problèmes avec Hibernate!

Lorsque je travaille avec Hibernate, j’utilise une classe d’installation qui s’exécute à partir de la ligne de commande et qui offre des options pour créer un schéma de base de données, insérer des données de base et mettre à jour dynamiquement le schéma de base de données à l’aide de SchemaUpdate . Je trouve cela extrêmement utile. Cela me permet également de placer des scripts uniques qui seront exécutés lors du lancement d'une nouvelle version, par exemple pour renseigner un nouveau champ dans une table de base de données existante.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top