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

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

Ответ 1

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

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

Ответ 2

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

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

посмотрите http://flywaydb.org

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

1) Миграции на основе Maven из Carbon Five

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

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

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