Будьте в спящем режиме - в спящем режиме hbm2ddl.auto =, проверяют

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

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

Я был бы довольно рад просто избавиться от, в спящем режиме hbm2ddl.auto в целом и управляют нашей базой данных самостоятельно. Однако не все мои коллеги совместно используют это мировоззрение, и некоторые стремятся включить, назад в спящем режиме hbm2ddl.auto=validate.

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

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

16
задан An̲̳̳drew 7 June 2010 в 16:21
поделиться

1 ответ

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

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

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

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

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

23
ответ дан 30 November 2019 в 21:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: