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

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

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

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

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

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

1 ответов


С Hibernate configuration docs:

hibernate.hbm2ddl.auto

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

например, validate | update | create / create-drop

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

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