2010-01-22 4 views
10

Как проверить соответствие конфигурации сопоставления Hibernate базе данных? Я хотел бы знать, использую ли я неправильную версию сопоставления hibernate, прежде чем приступать к выполнению обновлений и запросов, которые затем потерпят неудачу.Как проверить сопоставление Hibernate с базой данных

У меня есть группа классов, которые были сопоставлены аннотациями Hibernate. У меня также есть подключение к соответствующей базе данных. Теперь я хочу проверить, соответствует ли сопоставление Hibernate базе данных.

Я хотел бы проверить, по крайней мере, следующие вещи:

  • все отображенные таблицы в конфигурации Hibernate имеет соответствующий объект в базе данных (например, таблица или представление)
  • существует все отображенные поля в базе данных
  • все отображаемые поля имеют правильные типы

Я бы предпочел, чтобы мне не приходилось выполнять запросы к сопоставленным таблицам, предпочтительно проверка основана исключительно на метаданных базы данных.

ответ

14

От Hibernate configuration docs:

hibernate.hbm2ddl.auto

Автоматически проверяет или экспорта схемы DDL в базу данных, когда SessionFactory создается. С помощью create-drop схема базы данных будет удалена, если SessionFactory будет закрыта явно.

например. Проверить | обновление | создать | create-drop

Итак, вы можете установить его на validate, и он проверит, все ли в ваших спящих сопоставлениях присутствует в базе данных. Если вы установите его на update, то каждый раз, когда вы добавляете сопоставленный класс или свойство, базовая схема db будет обновлена, чтобы отразить это изменение.

У вас также есть инструмент командной строки - SchemaUpdate

+0

Что-то вроде, что я ищу. Но есть ли что-то в API, которое я мог бы выполнить программно? –

+1

Вы можете выполнить его программно. Напишите небольшую программу, которая создает SessionFactory с включенным «validate». – duffymo

+0

Да, есть инструмент командной строки - я добавил его к своему ответу. Или, желательно, то, что предложил duffymo. – Bozho