Użyłem programu Hibernate SchemaUpdate, aby wykonać tę samą funkcję co migracje. W rzeczywistości jest to łatwiejsze niż migracje, ponieważ za każdym razem, gdy uruchamiasz aplikację, sprawdza strukturę bazy danych i synchronizuje ją z mapowaniami, dzięki czemu nie ma dodatkowego rake: db: migrate step, a Twoja aplikacja nigdy nie może stracić synchronizacji z uruchomioną bazą danych przeciwko. Pliki mapowania Hibernacji nie są bardziej złożone niż migracje Railsów, więc nawet jeśli nie korzystałeś z Hibernacji w aplikacji, możesz to wykorzystać. Wadą jest to, że nie jest tak elastyczny, jeśli chodzi o wycofywanie, migrację w dół, uruchamianie instrukcji DML. Jak wskazano w komentarzach, nie usuwa również tabel ani kolumn. Uruchamiam osobną metodę, aby zrobić to ręcznie w ramach procesu inicjalizacji Hibernacji.
Nie rozumiem jednak, dlaczego nie mógłbyś używać migracji Railsów - dopóki nie masz nic przeciwko zainstalowaniu stosu (Ruby, Rake, Rails), nie musiałbyś dotykać swojej aplikacji.
Aby porównać funkcje między
zajrzyj na http://flywaydb.org
Powinien to być dobry początek dla Ciebie i każdego innego, aby wybrać odpowiednie narzędzie do pracy
źródło
Liquibase to kolejny projekt w tej dziedzinie, który warto sprawdzić.
źródło
Grails ma narzędzie dbmigrate wzorowane na narzędziu Rails. Ponieważ jest zaimplementowany w Groovy, powinieneś móc go używać z dowolnego projektu Java.
źródło
Natknąłem się na ten post, badając to samo pytanie. Nie doszedłem jeszcze do żadnych wniosków na temat najlepszego narzędzia lub podejścia, ale jednym z narzędzi, które spotkałem, a które nie zostało dotąd wymienione w innych odpowiedziach, jest dbdeploy . Byłbym zainteresowany przeczytaniem wszelkich porównań tych narzędzi.
Inne istotne źródła: nieco przestarzały post Martina Fowlera i Pramoda Sadalage'a o Evolutionary Database Design oraz książka Refactoring Databases: Evolutionary Database Design autorstwa Sadalage i Scot Ambler.
źródło
Istnieją również dwie niezależne implementacje migracji podobnych do szyn dla Javy:
1) Migracje oparte na Maven z Carbon Five
2) Zadania oparte na mrówkach z Hashrocket (mój osobisty ulubiony)
Chociaż te pakiety zostały napisane specjalnie dla Mavena i Anta, przy odrobinie pracy można je dostosować do prawie wszystkiego.
źródło
Migrate4j wydaje się być kandydatem, ale projekt nie wygląda na wystarczająco dojrzały, aby można go było wykorzystać w produkcji.
źródło
Istnieje również DbMaintain, który został pierwotnie opracowany w Unitils, ale teraz jest projektem dedykowanym. Obecnie z niego korzystamy i jesteśmy bardzo zadowoleni (co nie znaczy, że nie ma dobrych alternatyw). Więcej z nich wymieniam w mojej bazie danych + zakładki migracyjne (ze szczególnym uwzględnieniem narzędzi wspierających Mavena).
źródło