Java, эквивалентный для схемы базы данных, изменяется как Юг для Django?

Я работал над проектом Django использование на юг, чтобы отследить и управлять изменениями схемы базы данных. Я запускаю новый проект Java использование Google Web Toolkit и задаюсь вопросом, существует ли эквивалентный инструмент. Для тех, кто не знает, вот то, что делает Юг:

  • Автоматически распознайте изменения в моих моделях базы данных Python (добавьте/удалите столбцы, таблицы и т.д.),
  • Автоматически создайте SQL-операторы для применения тех изменений в моей базе данных
  • Отследите прикладные миграции схемы и примените их в порядке
  • Позвольте миграции данных с помощью кода Python. Например, разделяя поле имени на имя и поле фамилии с помощью разделения Python () функция

Я еще не выбрал свой Java ORM, но В спящем режиме, похож на самое популярное. Для меня способность легко внести изменения схемы базы данных будет важным фактором.

5
задан user27478 11 March 2010 в 18:52
поделиться

1 ответ

Ух ты, Юг звучит круто! Я не уверен в чем-то готовом, что поможет вам почти так же, как это, однако, если вы выберете Hibernate в качестве решения ORM, вы сможете без особых проблем создать свой собственный пакет для инкрементной миграции данных.

Вот подход, который я использовал в моем собственном проекте, он работал у меня довольно хорошо в течение нескольких лет и нескольких обновлений / изменений схемы:

  1. Ведение таблицы schema_version в базе данных, которая просто определяет число, которое представляет версию схемы вашей базы данных. Если хотите, с этой таблицей можно работать за пределами Hibernate.

  2. Сохраняйте «текущий» номер версии схемы внутри кода.

  3. Когда номер версии в коде новее, чем номер версии базы данных, вы можете использовать утилиту Hibernate SchemaUpdate, которая обнаружит любые добавления схемы (ПРИМЕЧАНИЕ, только добавления), такие как новые таблицы, столбцы и ограничения.

  4. Наконец, я сохранил «сценарий», если вы хотите, чтобы шаги миграции были больше, чем просто изменения схемы, которые определялись номером версии схемы, для которой они были необходимы. Например, для новых столбцов необходимо применить значения по умолчанию или что-то в этом роде.

Это может показаться трудоемким, особенно если исходить из среды, которая позаботилась об этом за вас, но вы можете получить такую ​​настройку довольно быстро с Hibernate, и ее довольно легко добавить в как вы продолжаете. За это время я никогда не вносил никаких изменений в свою структуру инкрементного обновления, кроме добавления новых задач миграции.

Надеюсь, кто-нибудь найдет хороший ответ для более «невмешательства», но я подумал, что поделюсь подходом, который мне очень понравился.

Удачи вам!

2
ответ дан 15 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: