У меня есть корпоративное приложение, использующее одну базу данных, но оно должно поддерживать mysql, oracle и sql * server в качестве вариантов установки.
Чтобы попытаться оставаться переносимым, мы используем аннотации JPA с Hibernate в качестве реализации. У нас также есть тестовый образец каждой базы данных, запущенной для разработки.
Приложение прекрасно создается на Maven, и я поигрался с hibernate3-maven-plugin и может автоматически сгенерировать DDL для заданного диалекта базы данных.
Как лучше всего подойти к этому, чтобы отдельные разработчики могли легко протестировать все три базы данных, а наш CI-сервер на базе Hudson мог правильно построить вещи.
Более конкретно:
Я думал, что цель hbm2ddl в hibernate3-maven-plugin просто сгенерирует файл схемы, но, очевидно, он подключается к действующей базе данных и пытается создать схему. Есть ли способ, чтобы этот просто создал файл схемы для каждого диалекта базы данных без подключения к базе данных?
Если hibernate3-maven-plugin настаивает на фактическом создании схемы базы данных, есть ли способ заставить его удалить базу данных и воссоздать ее перед созданием схемы?
Я думаю, что каждый разработчик (и машина сборки Hudson) должен иметь свою собственную отдельную базу данных на каждом сервере базы данных. Это типично?
Придется ли разработчикам запускать Maven трижды ... один раз для каждого поставщика базы данных? Если да, как мне объединить результаты на машине сборки?
В hibernate3-maven-plugin есть цель hbm2doc. Кажется излишним запускать это три раза ... Я думаю, это будет почти идентично для каждой базы данных.