Вопрос

Я заинтересован в том, как Hibernate.hbm2ddl.auto = Validate на самом деле работает, и я изо всех сил пытаюсь найти комплексную документацию.

Мы недавно обнаружили производственную систему повлияли http://opensource.atlassian.com/projects/ibernate/browse/hhhh-3532. (Hibernate соответствует иностранным ключам по названию, а не подписью и так воссоздает их для вас), и hibernate.hbm2ddl.auto = обновление удаляется из нашего следующего выпуска.

Я был бы вполне рад просто избавиться от Hibernate.hbm2ddl.auto в целом и управлять нашей базой данных. Тем не менее, не все мои коллеги поделитесь этим миром, а некоторые стремятся добавить обратно в Hibernate.hbm2ddl.auto = Validate.

Я обеспокоен, что это ударит ту же проблему, и мне интересно найти больше документации о том, как эта проверка на самом деле работает. Документация с гибернацией сообщества (http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html.) действительно просто ссылается на значения.

У кого-нибудь есть хорошие указатели документации или любой реальный жизненный опыт использования Validate в производственной системе?

Это было полезно?

Решение

Я обеспокоен, что это ударит ту же проблему, и мне интересно найти больше документации о том, как эта проверка на самом деле работает.

На мой взгляд, лучшая документация - это исходный код, который вы могли бы проверить, чтобы увидеть, что происходит точно. Соответствующий метод org.hibernate.tool.hbm2ddl.SchemaValidator#validate().

Я быстро пошел через код и я не думай, что SchemaValidator проверяет иностранные ключи в базе данных: Он проверяет наличие таблиц, колонн, идентификационных генераторов, но не зарубежных ключей. Тест против базы данных PET, по-видимому, подтверждает это поведение: падение ограничения FK не нарушает проверку схемы (другими словами, проверка проверки валидатора, если приложение может работать не для ссылочной целостности).

Сейчас, HHH-3532. Быть помеченным как фиксированные, почему вы не обновляете до более новой версии Hibernate или, если изменение версии Hibernate слишком тяжело, почему бы вам не применить патч для HHH-3532. сами?

Наличие того, что все сказано, я Не используйте hibernate.hbm2ddl.auto=update Чтобы обновить производственные базы данных, я использую сценарии изменений. Но я использовать hibernate.hbm2ddl.auto=validate И я доволен этим.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top