Система управления версиями для базы данных

У нас есть java-приложение, которое использует весеннюю загрузку и спящий режим.

Есть много изменений в объектах и ​​полях. Поэтому я хочу следить за изменениями и механизмом отката. Итак, мне нужна система контроля версий над базой данных. Я проверил пролетный путь и ликвибазу, но думаю, что это не решит мою проблему. Потому что создание и обновление моих таблиц обрабатываются спящим режимом.

Есть ли способ узнать, какие запросы выполняются спящим режимом для изменения базы данных и какие изменения произошли с момента последнего изменения базы данных (я имею в виду новую таблицу, создание столбца или рефакторинг)?


person uğur taş    schedule 10.01.2018    source источник
comment
Потому что мои создания таблиц и обновления обрабатываются спящим режимом. и это твоя ошибка. Не позволяйте Hibernate изменять вашу схему и начните управлять ею вручную через Flyway или Liquibase.   -  person Kayaman    schedule 10.01.2018


Ответы (2)


Один из способов сделать это (как мы это делаем):

Используйте 2 базы данных. Справочная база данных и база данных разработки. В базе данных разработки используйте спящий режим, чтобы он мог создать структуру.

После завершения цикла разработки вы запускаете Liquibase diffChangelog в эталонной базе данных. Он создаст changelog.xml со всеми изменениями, которые были сделаны с помощью спящего режима в базе данных разработки. Вручную исправьте это (имена и т. Д.). Когда вы будете довольны файлом журнала изменений и завершите цикл разработки, примените журнал изменений к справочной базе данных.

Начните следующий цикл разработки и повторите.

Таким образом, вы можете объединить преимущества, позволяющие спящему режиму генерировать схему, и по-прежнему использовать Liquibase для создания схемы БД с поддержкой версий, которую можно воссоздавать.

person Jens    schedule 10.01.2018
comment
Могу ли я использовать diffChangeLog для получения содержимого строки таблицы с параметром --diffTypes = data? @Jens - person NeenuChandran; 27.07.2020

Используйте те инструменты, которые предназначены для этой цели. Лично мне Liquibase нравится больше, но выбор за вами.

Механизм создания схемы Hibernate не должен использоваться в производстве, поскольку тогда ваше Java-описание объекта будет управлять созданием таблиц, что приведет к неэффективной структуре. Эта функция предназначена только для тестирования.

person galovics    schedule 10.01.2018