Question

J'utilise à la fois Ruby on Rail et Java. J'aime beaucoup utiliser les migrations lorsque je travaille sur un projet de rails. Je me demande donc s'il existe un outil de migration pour Java. S'il n'y a pas un tel outil, est-ce une bonne idée d'utiliser les migrations comme outil pour contrôler une base de données utilisée par un projet Java?

Était-ce utile?

La solution

J'ai utilisé SchemaUpdate d'Hibernate pour effectuer la même fonction que les migrations. C'est en fait plus facile que les migrations car chaque fois que vous démarrez votre application, elle examine la structure de la base de données et la synchronise avec vos mappages afin d'éviter toute erreur supplémentaire: l'étape dake: db: migrate et votre application ne peut jamais être désynchronisée avec la base de données qu'elle exécute. contre. Les fichiers de mappage d'Hibernate ne sont pas plus complexes que les migrations Rails. Même si vous n'utilisiez pas Hibernate dans l'application, vous pourriez en profiter. L'inconvénient est qu'il n'est pas aussi flexible que de revenir en arrière, de migrer vers le bas, d'exécuter des instructions DML. Comme indiqué dans les commentaires, il ne supprime pas non plus de tables ou de colonnes. J'exécute une méthode distincte pour les effectuer manuellement dans le cadre du processus d'initialisation d'Hibernate.

Je ne vois pas pourquoi vous ne pourriez pas utiliser les migrations Rails - tant que l'installation de la pile ne vous gêne pas (Ruby, Rake, Rails), vous n'avez pas à toucher à votre application.

Autres conseils

Pour une comparaison des fonctionnalités entre

  • voie de migration
  • Liquibase
  • c5-db-migration
  • dbdeploy
  • mybatis
  • MIGRATEdb
  • migrate4j
  • dbmainain
  • AutoPatch

consultez http://flywaydb.org

Cela devrait être un bon début pour vous et pour quiconque d’autre choisir le bon outil pour le poste

.

Liquibase est un autre projet intéressant à vérifier dans ce domaine.

Grails a un dbmigrate qui est identique à celui de Rails. Comme il est implémenté dans Groovy, vous devriez pouvoir l’utiliser à partir de n’importe lequel de vos projets Java.

Je suis tombé sur ce post en cherchant la même question. Je ne suis pas encore parvenu à des conclusions sur le meilleur outil ni sur la meilleure approche, mais un outil que je n'ai pas mentionné et qui n'a pas été mentionné dans d'autres réponses jusqu'à présent est dbdeploy . Je serais intéressé de lire toutes les comparaisons de ces outils.

Quelques autres ressources pertinentes: le post un peu vieillot de Martin Fowler et Pramod Sadalage sur la conception de base de données évolutive , et le livre Refactoring de bases de données: conception d'une base de données évolutive par Sadalage et Scot Ambler.

Il existe également deux implémentations indépendantes de migrations de type rails pour Java:

1) Migrations Maven à partir de Carbon Five

2) Tâches basées sur les Ant de Hashrocket (mon favori personnel)

Bien que ces packages aient été spécialement conçus pour Maven et Ant, vous pouvez les adapter à tout, à quelques tâches près.

Migrate4j semble être un candidat, mais le projet ne semble pas assez mature pour être utilisé en production.

Il existe également un DbMaintain qui a initialement été développé à l'intérieur de Unitils , mais est maintenant un projet dédié. Nous l'utilisons actuellement et sommes très satisfaits (ce qui ne veut pas dire qu'il n'y a pas de bonne alternative). J'en répertorie davantage dans mes favoris base + migration (en mettant l'accent sur les outils prenant en charge Maven ).

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