Существует ли простой рабочий процесс для создания схемы базы данных из классов с отображениями гибернации?

Я хотел бы определить мои объекты, а затем использовать 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> Задача муравья

Рекомендации

Другие вопросы по тегам