Как проверить сопоставление Hibernate с базой данных

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

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

Я хочу проверить хотя бы следующие вещи:

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

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

Ответ 1

Из Hibernate docs:

hibernate.hbm2ddl.auto

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

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

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

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