Миграции для Java - PullRequest
       54

Миграции для Java

83 голосов
/ 25 сентября 2008

Я использую как ruby ​​на рельсах, так и Java. Мне действительно нравится использовать миграции, когда я работаю над проектом rails. поэтому мне интересно, есть ли миграция как инструмент для Java? Если такого инструмента нет, будет ли хорошей идеей использовать миграции в качестве инструмента для управления базой данных, используемой проектом Java?

Ответы [ 8 ]

86 голосов
/ 05 октября 2010

Для сравнения функций между

  • * пролетный путь 1006 *
  • LiquiBase
  • c5-дб-миграция
  • dbdeploy
  • mybatis
  • MIGRATEdb
  • migrate4j
  • dbmaintain
  • автопатч

взгляните на http://flywaydb.org

Это должно стать хорошим началом для вас и всех остальных, чтобы выбрал правильный инструмент для работы

12 голосов
/ 26 августа 2009

Liquibase - еще один проект в этой области, который стоит проверить.

10 голосов
/ 25 сентября 2008

Grails имеет утилиту dbmigrate , созданную по образцу утилиты Rails. Поскольку он реализован в Groovy, вы сможете использовать его из любого вашего Java-проекта.

8 голосов
/ 25 сентября 2008

Я использовал SchemaUpdate Hibernate для выполнения той же функции, что и миграции. На самом деле это проще, чем миграция, потому что каждый раз, когда вы запускаете свое приложение, оно проверяет структуру базы данных и синхронизирует ее с вашими сопоставлениями, поэтому никаких дополнительных граблей нет: db: migrate step и ваше приложение никогда не может быть не синхронизировано с базой данных, которую оно запускает против. Файлы отображения Hibernate не сложнее миграций Rails, поэтому даже если вы не использовали Hibernate в приложении, вы можете воспользоваться этим. Недостатком является то, что он не так гибок, как откат, миграция вниз, выполнение операторов DML. Как указано в комментариях, он также не удаляет таблицы или столбцы. Я запускаю отдельный метод, чтобы сделать это вручную, как часть процесса инициализации Hibernate.

Я не понимаю, почему вы не можете использовать миграцию Rails - пока вы не возражаете против установки стека (Ruby, Rake, Rails), вам не нужно будет трогать ваше приложение.

6 голосов
/ 07 февраля 2010

Я наткнулся на этот пост, исследуя тот же вопрос. Я еще не пришел к каким-либо выводам о лучшем инструменте или подходе, но один инструмент, с которым я столкнулся, который еще не упоминался в других ответах, это dbdeploy . Мне было бы интересно прочитать любые сравнения этих инструментов.

Некоторые другие соответствующие ресурсы: несколько устаревший пост Мартина Фаулера и Прамода Садаладжа по Эволюционный дизайн баз данных и книга Рефакторинг баз данных: Эволюционный дизайн баз данных от Sadalage и Scot Ambler. *

6 голосов
/ 28 мая 2009

Существует также две независимые реализации рельсовых миграций для Java:

1) Миграция на основе Maven из Углеродная пятерка

2) Задачи на основе муравьев от Hashrocket (мой личный фаворит)

Хотя эти пакеты были написаны специально для Maven и Ant, с некоторыми работами вы можете адаптировать их практически ко всему.

4 голосов
/ 28 декабря 2009

Migrate4j выглядит как кандидат, но проект не выглядит достаточно зрелым для производственного использования.

2 голосов
/ 13 октября 2010

Существует также DbMaintain , который изначально разрабатывался внутри Unitils , но теперь является отдельным проектом. В настоящее время мы используем его и очень довольны (что не означает, что нет хороших альтернатив). Я перечисляю больше из них в моих базах данных + миграция закладок (с акцентом на инструменты, поддерживающие Maven).

...