Как проверить сопоставление Hibernate с базой данных
Как проверить соответствие конфигурации сопоставления Hibernate базе данных? Я хотел бы знать, использую ли я неправильную версию сопоставления спящего режима до того, как я начну выполнять обновление и запросы, которые затем потерпят неудачу.
У меня есть группа классов, которые были сопоставлены с аннотациями Hibernate. У меня также есть подключение к соответствующей базе данных. Теперь я хочу проверить, соответствует ли сопоставление Hibernate базе данных.
Я хочу проверить хотя бы следующие вещи:
- все сопоставленные таблицы в конфигурации Hibernate имеют соответствующий объект в базе данных (например, таблица или представление).
- все сопоставленные поля существуют в базе данных
- все отображаемые поля имеют правильные типы
Я бы предпочел, чтобы мне не приходилось выполнять запросы к сопоставленным таблицам, предпочтительно проверка основана исключительно на метаданных базы данных.
Ответы
Ответ 1
Из Hibernate docs:
hibernate.hbm2ddl.auto
Автоматически проверяет или экспортирует DDL схемы в базу данных при создании SessionFactory. С помощью create-drop схема базы данных будет удалена, если SessionFactory будет закрыта явно.
например. Проверить | обновление | создать | create-drop
Итак, вы можете установить его на validate
, и он проверит, все ли в ваших спящих сопоставлениях присутствует в базе данных. Если вы установите его на update
, то каждый раз, когда вы добавляете сопоставленный класс или свойство, базовая схема db будет обновлена, чтобы отразить это изменение.
У вас также есть инструмент командной строки - SchemaUpdate