Liquibase лучше всего использовать в качестве замены для hbm2ddl.Таким образом, вы можете получить заполнение данных, когда база данных находится в состоянии, которое соответствует этим данным, и более поздние наборы изменений могут обновить вставленные данные вместе с другими изменениями.Если вы сначала запустите hbm2ddl, а затем liquibase, чтобы заполнить данные, вам всегда нужно будет вносить изменения в структуру данных вставки.
Один из способов использовать hibernate и liquibase - это использовать инструмент liquibase diff в antили maven во время разработки для добавления в файл изменений на основе различий между вашей базой данных и вашей моделью гибернации.Убедитесь, что вы проверяете, что он пытается сделать, поскольку это не всегда то, что вы ожидаете (он решает удалить столбец и добавить столбец вместо его переименования).Как только ваш файл журнала изменений был создан, вы можете запустить его, как и любой файл журнала изменений, передав, например, пружинный компонент liquibase при запуске приложения.Вам не нужно использовать как hbm2ddl, так и liquibase, так как liquibase использует hbm2ddl для создания «базы данных» гибернации, с которой liquibase сравнивает вашу текущую базу данных.
При этом ваши шаги:
- Внесение изменений в вашу модель гибернации
- Запуск разницы в liquibase между hibernate и существующей базой данных
- Проверка новых наборов изменений в liquibase
- Выполнение сценария liquibase для базы данных
Единственная проблема может заключаться в том, что hibernate diff tool может не поддерживаться в maven, как в ant и командной строке, особенно в 1.9.
Если вы не хотите иметь дело с утилитой liquibase diff, вы всегда можете добавить changeSets в файл журнала изменений для каждого изменения вручную.Формат XML разработан так, чтобы с ним было легко работать вручную.В этом случае вы должны выполнить следующие действия:
- Внести изменения в модель гибернации
- Добавить необходимые изменения в свой файл журнала изменений
- Выполнить сценарий liquibase для базы данных
- Проверка и повтор