Я использовал SchemaUpdate Hibernate для выполнения той же функции, что и миграции. На самом деле это проще, чем миграция, потому что каждый раз, когда вы запускаете свое приложение, оно проверяет структуру базы данных и синхронизирует ее с вашими сопоставлениями, поэтому нет лишних граблей: шаг db: migrate, и ваше приложение никогда не может быть рассинхронизировано с базой данных, в которой оно запущено против. Файлы сопоставления Hibernate не сложнее миграции Rails, поэтому, даже если вы не использовали Hibernate в приложении, вы могли бы им воспользоваться. Обратной стороной является то, что он не так гибок, как откат, миграция вниз и выполнение операторов DML. Как указано в комментариях, он также не удаляет таблицы или столбцы. Я использую отдельный метод, чтобы сделать это вручную как часть процесса инициализации Hibernate.
Я не понимаю, почему вы не могли использовать миграции Rails - если вы не возражаете против установки стека (Ruby, Rake, Rails), вам не придется трогать свое приложение.
Для сравнения функций между
посмотрите http://flywaydb.org
Это должно стать хорошим началом для вас и всех остальных, чтобы выбрать правильный инструмент для работы.
источник
Liquibase - еще один проект в этой области, на который стоит обратить внимание.
источник
В Grails есть утилита dbmigrate, созданная по образцу утилиты из Rails. Поскольку он реализован на Groovy, вы сможете использовать его в любом из ваших Java-проектов.
источник
Я наткнулся на этот пост, исследуя тот же вопрос. Я еще не пришел к каким-либо выводам о лучшем инструменте или подходе, но один инструмент, с которым я столкнулся, который пока не упоминался в других ответах, - это dbdeploy . Мне было бы интересно прочитать любые сравнения этих инструментов.
Некоторые другие соответствующие ресурсы: несколько устаревшая статья Мартина Фаулера и Прамода Садаладжа об эволюционном проектировании баз данных и книга Садаладжа и Скота Амблера « Рефакторинг баз данных: эволюционный дизайн баз данных» .
источник
Также существуют две независимые реализации рельсовых миграций для Java:
1) Миграция на основе Maven с Carbon Five
2) Задачи на основе Ant от Hashrocket (мой личный фаворит)
Хотя эти пакеты были написаны специально для Maven и Ant, поработав, вы можете адаптировать их практически ко всему.
источник
Migrate4j кажется кандидатом, но проект не выглядит достаточно зрелым для производственного использования.
источник
Существует также DbMaintain, который изначально был разработан внутри Unitils, но теперь является специализированным проектом. В настоящее время мы используем его и очень довольны (что не означает, что нет хороших альтернатив). Я перечисляю больше из них в закладках базы данных + миграции (с упором на инструменты, поддерживающие Maven).
источник