Я работал над проектом Django использование на юг, чтобы отследить и управлять изменениями схемы базы данных. Я запускаю новый проект Java использование Google Web Toolkit и задаюсь вопросом, существует ли эквивалентный инструмент. Для тех, кто не знает, вот то, что делает Юг:
Я еще не выбрал свой Java ORM, но В спящем режиме, похож на самое популярное. Для меня способность легко внести изменения схемы базы данных будет важным фактором.
Ух ты, Юг звучит круто! Я не уверен в чем-то готовом, что поможет вам почти так же, как это, однако, если вы выберете Hibernate в качестве решения ORM, вы сможете без особых проблем создать свой собственный пакет для инкрементной миграции данных.
Вот подход, который я использовал в моем собственном проекте, он работал у меня довольно хорошо в течение нескольких лет и нескольких обновлений / изменений схемы:
Ведение таблицы schema_version в базе данных, которая просто определяет число, которое представляет версию схемы вашей базы данных. Если хотите, с этой таблицей можно работать за пределами Hibernate.
Сохраняйте «текущий» номер версии схемы внутри кода.
Когда номер версии в коде новее, чем номер версии базы данных, вы можете использовать утилиту Hibernate SchemaUpdate, которая обнаружит любые добавления схемы (ПРИМЕЧАНИЕ, только добавления), такие как новые таблицы, столбцы и ограничения.
Наконец, я сохранил «сценарий», если вы хотите, чтобы шаги миграции были больше, чем просто изменения схемы, которые определялись номером версии схемы, для которой они были необходимы. Например, для новых столбцов необходимо применить значения по умолчанию или что-то в этом роде.
Это может показаться трудоемким, особенно если исходить из среды, которая позаботилась об этом за вас, но вы можете получить такую настройку довольно быстро с Hibernate, и ее довольно легко добавить в как вы продолжаете. За это время я никогда не вносил никаких изменений в свою структуру инкрементного обновления, кроме добавления новых задач миграции.
Надеюсь, кто-нибудь найдет хороший ответ для более «невмешательства», но я подумал, что поделюсь подходом, который мне очень понравился.
Удачи вам!