Как мне имитировать поведение создания Hibernate hbm2ddl в Liquibase?

Я некоторое время работал с liquibase 1.9.5 и получил его, чтобы заменить стратегию hibernate hbm2ddl по созданию таблиц и загрузке в нее приборов. Поскольку это проект maven и поскольку я использую hsqldb (используя файл create = true), я просто создаю базу данных в целевой папке, чтобы у меня была свежая база данных в любое время, когда я тестирую приложение. Работает нормально, пока я не понимаю:

1 Мне нужно будет воссоздать базу данных при выполнении интеграционного теста с использованием базы данных mysql.

2 Мне определенно понадобится такое же решение для проекта, отличного от maven.

Итак, как мне удалить и создать базу данных при использовании liquibase, а не hbm2ddl?


person black sensei    schedule 06.04.2011    source источник


Ответы (1)


Самый простой способ - добавить отдельный вызов базы данных перед обновлением liquibase, которое запускает sql

DROP DATABASE X;
CREATE DATABASE X

В Liquibase есть команда dropAll, которую можно использовать для удаления всего в схеме, но она медленнее, чем удаление/создание базы данных в mysql, и может пропустить некоторые объекты базы данных.

person Nathan Voxland    schedule 15.04.2011
comment
Привет, Натан, спасибо за чтение и предоставление решения. Кстати, может ли liquibase работать с реализацией jpa в спящем режиме в том смысле, что он может создавать схему на основе моей модели домена? (надеюсь, это не слишком много, чтобы спросить;)) - person black sensei; 16.04.2011
comment
Не сейчас. Существует исправление, предлагаемое на forum.liquibase.org/topic/jpa-persistance-xml, который еще не был интегрирован, хотя вы можете внести изменения локально и посмотреть, как это работает. - person Nathan Voxland; 16.04.2011