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 qu'il n'y ait pas de rake supplémentaire: db: migrate step 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 Hibernate ne sont pas plus complexes que les migrations Rails, donc même si vous n'avez pas utilisé Hibernate dans l'application, vous pouvez 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 les tables ou les colonnes. J'exécute une méthode distincte pour les faire manuellement dans le cadre du processus d'initialisation Hibernate.
Je ne vois pas pourquoi vous ne pouvez pas utiliser les migrations Rails - tant que cela ne vous dérange pas d'installer la pile (Ruby, Rake, Rails), vous n'aurez pas à toucher votre application.
Pour une comparaison des fonctionnalités entre
jettes un coup d'oeil à http://flywaydb.org
Cela devrait être un bon début pour vous et pour toute autre personne afin de sélectionner le bon outil pour le travail
la source
Liquibase est un autre projet dans ce domaine qui mérite d'être vérifié.
la source
Grails a un utilitaire dbmigrate qui est calqué sur celui de Rails. Comme il est implémenté dans Groovy, vous devriez pouvoir l'utiliser à partir de n'importe lequel de vos projets Java.
la source
J'ai parcouru ce post en recherchant la même question. Je n'ai pas encore tiré de conclusions sur le meilleur outil ou la meilleure approche, mais un outil que j'ai rencontré 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 quelque peu âgé de Martin Fowler et Pramod Sadalage sur Evolutionary Database Design , et le livre Refactoring Databases: Evolutionary Database Design de Sadalage et Scot Ambler.
la source
Il existe également deux implémentations indépendantes de migrations de type rails pour Java:
1) Migrations basées sur Maven depuis Carbon Five
2) Tâches basées sur Ant de Hashrocket (mon préféré)
Bien que ces packages aient été spécifiquement écrits pour Maven et Ant, avec un peu de travail, vous pouvez les adapter à à peu près n'importe quoi.
la source
Migrate4j semble être un candidat, mais le projet ne semble pas assez mature pour une utilisation en production.
la source
Il y a aussi DbMaintain qui a été initialement développé dans Unitils mais qui 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 bonnes alternatives). J'en répertorie plus dans ma base de données + les favoris de migration (en mettant l'accent sur les outils prenant en charge Maven).
la source