Java-библиотека для поддержки структуры базы данных

Мое приложение всегда разрабатывается, поэтому иногда - при обновлении версии - нужно создавать/изменять/удалять некоторые таблицы, изменять некоторые данные и т.д. Обычно требуется выполнить код sql.

Есть ли библиотека Java, которая может использоваться для обновления моей структуры базы данных в актуальном состоянии (анализируя что-то вроде "db structure version" ) и выполняя собственный код sql для обновления с одной версии на другой)?

Также было бы здорово иметь некоторые базовые действия (например, добавить/удалить столбец), готовые к использованию с минимальной конфигурацией, то есть имя/тип и без кода sql.

Ответ 1

Попробуйте DBDeploy. Хотя я не использовал его в прошлом, похоже, этот проект поможет в вашем случае. DBDeploy является менеджером рефакторинга баз данных, который:

"Автоматизирует процесс установления какие рефакторинги базы данных должны быть работать с конкретной базой данных в чтобы перенести его на конкретный строить".

Известно, что он интегрируется как с Ant, так и с Maven.

Ответ 2

Попробуйте Liquibase.

Liquibase - это открытый источник (Apache 2.0 Лицензия), независимая от базы данных библиотека для отслеживания, управления и применение изменений базы данных. Он построен по простой посылке: вся база данных изменения хранятся в удобочитаемом человеке но отслеживаемая форма и источника.

Поддерживаемые функции:

  • расширяемость
  • Слияние изменений с несколькими разработчиками
  • ветки кода
  • Несколько баз данных
  • Управление производственными данными, а также различными наборами тестовых данных
  • Обновление баз данных с кластерами
  • Автоматические обновления или генерация SQL-скриптов, которые могут быть одобрены и применяемый администратором баз данных
  • Откат обновлений
  • База данных "diff" s
  • Создание журналов старта изменений из существующих баз данных
  • Создание документации по изменению базы данных

Ответ 3

Мы используем для этого часть программного обеспечения под названием Liquibase. Он очень гибкий, и вы можете настроить его в значительной степени, как хотите. Мы интегрировали его с Maven, поэтому наша база данных всегда актуальна.

Ответ 4

Вы также можете проверить Flyway (400 вопросов, помеченных как SOW) или mybatis (1049 вопросов с тегами). Чтобы добавить к сравнению другие варианты: Liquibase (663 вопроса с тегами) и DBDeploy (24 вопроса с тегами).

Другим ресурсом, который вы можете найти полезным, является сравнение возможностей на веб-сайте Flyway (здесь упоминаются другие связанные проекты).

Ответ 5

Вы должны взглянуть на библиотеки OR Mapping, например. Hibernate

Ответ 6

Большинство ORM-маркеров имеют логику для модернизации схемы для вас, я успешно использовал Hibernate, который автоматически получает по крайней мере базовый материал.