Ich habe das SchemaUpdate von Hibernate verwendet, um dieselbe Funktion wie bei Migrationen auszuführen. Es ist tatsächlich einfacher als Migrationen, da jedes Mal, wenn Sie Ihre App starten, die Datenbankstruktur überprüft und mit Ihren Zuordnungen synchronisiert wird, sodass kein zusätzlicher Rake erforderlich ist: db: Migrationsschritt und Ihre App kann niemals nicht mehr mit der Datenbank synchronisiert sein, die sie ausführt gegen. Zuordnungsdateien für den Ruhezustand sind nicht komplexer als Rails-Migrationen. Selbst wenn Sie Hibernate nicht in der App verwendet haben, können Sie dies nutzen. Der Nachteil ist, dass es nicht so flexibel ist, ein Rollback durchzuführen, nach unten zu migrieren oder DML-Anweisungen auszuführen. Wie in den Kommentaren erwähnt, werden auch keine Tabellen oder Spalten gelöscht. Ich führe eine separate Methode aus, um diese manuell im Rahmen des Hibernate-Initialisierungsprozesses auszuführen.
Ich verstehe nicht, warum Sie Rails-Migrationen nicht verwenden konnten - solange es Ihnen nichts ausmacht, den Stack (Ruby, Rake, Rails) zu installieren, müssen Sie Ihre App nicht berühren.
Für einen Funktionsvergleich zwischen
Schauen Sie sich http://flywaydb.org an
Dies sollte ein guter Anfang für Sie und alle anderen sein, um das richtige Werkzeug für den Job auszuwählen
quelle
Liquibase ist ein weiteres Projekt in diesem Bereich, das einen Besuch wert ist.
quelle
Grails hat ein dbmigrate- Dienstprogramm, das dem von Rails nachempfunden ist. Da es in Groovy implementiert ist, sollten Sie es in jedem Ihrer Java-Projekte verwenden können.
quelle
Ich bin auf diesen Beitrag gestoßen, als ich dieselbe Frage recherchiert habe. Ich habe noch keine Schlussfolgerungen über das beste Tool oder den besten Ansatz gezogen, aber ein Tool, auf das ich gestoßen bin und das in anderen Antworten bisher nicht erwähnt wurde, ist dbdeploy . Es würde mich interessieren, Vergleiche dieser Tools zu lesen.
Einige andere relevante Ressourcen: Martin Fowler und Pramod Sadalages etwas gealterter Beitrag zum evolutionären Datenbankdesign und das Buch Refactoring Databases: Evolutionary Database Design von Sadalage und Scot Ambler.
quelle
Es gibt auch zwei unabhängige Implementierungen von Rails-ähnlichen Migrationen für Java:
1) Maven-basierte Migrationen von Carbon Five
2) Ameisenbasierte Aufgaben von Hashrocket (mein persönlicher Favorit)
Obwohl diese Pakete speziell für Maven und Ant geschrieben wurden, können Sie sie mit einigen Arbeiten an nahezu alles anpassen.
quelle
Migrate4j scheint ein Kandidat zu sein, aber das Projekt sieht für die Verwendung in der Produktion nicht ausgereift aus.
quelle
Es gibt auch DbMaintain, das ursprünglich in Unitils entwickelt wurde , jetzt aber ein spezielles Projekt ist. Wir verwenden es derzeit und sind sehr zufrieden (was nicht bedeutet, dass es keine guten Alternativen gibt). Ich liste mehr davon in meinen Datenbank- und Migrationslesezeichen auf (mit Schwerpunkt auf Tools, die Maven unterstützen).
quelle