Существует ли простой рабочий процесс для создания схемы базы данных из классов с отображениями гибернации?
Я хотел бы определить мои объекты, а затем использовать Hibernate для создания моего ddl из этого. Но похоже, что единственный реальный рабочий процесс с Hibernate - это создание схемы базы данных, а затем ее обратный инжиниринг. Я хочу сделать что-то, что не имеет смысла?
2 ответа
Да есть свойство hibernate.hbm2ddl.auto
, В документации сказано:
Автоматически проверяет или экспортирует DDL схемы в базу данных при создании SessionFactory. С помощью create-drop схема базы данных будет удалена, когда SessionFactory будет закрыт явно.
например проверить | обновление | создать | создание-падение
Есть несколько способов определить это свойство, в зависимости от того, как вы SessionFactory
, Спящий режим - это просто добавить:
<property name="hibernate.hbm2ddl.auto">update</property>
Но похоже, что единственный реальный рабочий процесс с Hibernate - это создание схемы базы данных, а затем ее обратный инжиниринг.
Нет, абсолютно нет. Исторически Hibernate поддерживает несколько подходов:
Сверху вниз: вы начинаете с объектной модели, затем создаете метаданные отображения либо с помощью XML-файлов или аннотаций, а затем генерируете схему с использованием Hibernate.
hbm2ddl
инструмент.Внизу: вы начинаете с существующей базы данных и генерируете сопоставления и классы Java (или просто аннотированные классы Java) из схемы базы данных, используя
hbm2hbmxml
а такжеhbm2java
,Середина: вы начинаете писать отображения Hibernate XML и генерировать классы DDL и Java, используя
hbm2ddl
а такжеhbm2java
соответственно.Встреча в середине: у вас есть существующая модель Java и существующая база данных. Инструменты Hibernate здесь не сильно помогут, вам, скорее всего, придется писать сопоставления вручную и выполнять некоторый рефакторинг базы данных, или кода Java, или использовать какой-то мост. Это худшая ситуация.
Итак, как мы видели, Hibernate поддерживает несколько рабочих процессов и предоставляет инструменты для них. И в вашем случае вы ищете инструмент под названием hbm2ddl
(также известен как SchemaExport
, который является именем класса, реализующего его). Есть несколько способов его использования:
- Вы можете запустить
SchemaExport
программно. - Вы можете включить автоматический экспорт схемы в
SessionFactory
время создания путем установки свойстваhibernate.hbm2ddl.auto
до соответствующей стоимости - Вы можете использовать
<hbm2ddl>
Задача муравья
Рекомендации
- Справочное руководство по Hibernate
- Справочное руководство по инструментам Hibernate
- 4.4.1. Экспортер схемы базы данных (
<hbm2ddl>
)
- 4.4.1. Экспортер схемы базы данных (