Есть ли простой рабочий процесс для генерации схемы базы данных из классов с помощью сопоставлений в гибернации?
Вопрос
Я хотел бы определить мои объекты, затем используйте Hibernate для создания моего DDL от этого. Но кажется, что единственный реальный рабочий процесс с гибернатом состоит в том, чтобы генерировать схему DANBASE, а затем обратный инженер. Я хочу сделать что-то, что не имеет смысла?
Решение
Да есть недвижимость hibernate.hbm2ddl.auto
. Отказ То документация говорит:
Автоматически проверяет или экспортирует Schema DDL в базу данных, когда создается Sessionactory. С Create-Drop, схема базы данных будет отброшена, когда Sessionactory замкнут явно.
например, подтвердить |. Обновление |. создать |. падение создания
Есть несколько способов определить это свойство, в зависимости от того, как вы настраиваете свой SessionFactory
. Отказ Сервинавт - просто добавить:
<property name="hibernate.hbm2ddl.auto">update</property>
Другие советы
Но похоже, что единственный реальный рабочий процесс с гибернатом состоит в том, чтобы генерировать схему базы данных, а затем обратный инженер.
Нет, абсолютно нет. Исторически Hibernate поддерживает несколько подходов:
Сверху вниз: Вы начинаете с объектной модели, затем создаете отображение MetatData либо с XML-файлами или аннотациями, а затем генерировать схему с помощью Hibernate's's
hbm2ddl
инструмент.Вверх дном: Вы начинаете с существующей базы данных и генерации отображений и классов Java (или просто аннотированные классы Java) из схемы базы данных, используя
hbm2hbmxml
а такжеhbm2java
.Среднее: Вы начинаете записывать сопоставления Hibernate XML и генерируйте классы DDL и Java, используя
hbm2ddl
а такжеhbm2java
соответственно.Встретиться в середине: У вас есть существующая модель Java и существующая база данных. Hibernate Tooling Mouse не может здесь не помочь, вы, вероятно, придется писать отображения вручную и сделать рефакторинг базы данных или кода Java или использовать какой-то мост. Это худшая ситуация.
Итак, как мы видели, Hibernate поддерживает несколько рабочих процессов и обеспечивает для них инструменты. И в вашем случае вы ищете инструмент под названием hbm2ddl
(также известен как SchemaExport
, что название класса, реализующего его). Есть несколько способов использовать его:
- Вы можете запустить
SchemaExport
Программно. - Вы можете включить автоматический экспорт схемы на
SessionFactory
Время создания, установив свойствоhibernate.hbm2ddl.auto
к соответствующему значению - Вы можете использовать
<hbm2ddl>
Задача муравей
использованная литература
- Справочное руководство по гибернации
- Справочное руководство по Hibernate Tools