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

Я хотел бы определить мои объекты, а затем использовать hibernate для генерации моего ddl из этого. Но похоже, что единственный реальный рабочий процесс с Hibernate - это создание схемы базы данных, а затем обратный инжиниринг. Я хочу сделать что-то, что не имеет смысла?

Ответы [ 2 ]

1 голос
/ 09 сентября 2010

Но похоже, что единственный реальный рабочий процесс в режиме гибернации - это создание схемы базы данных и ее обратный инжиниринг.

Нет, абсолютно нет. Исторически Hibernate поддерживает несколько подходов:

  • Сверху вниз: Вы начинаете с объектной модели, затем создаете метаданные сопоставления либо с помощью файлов XML или аннотаций, а затем генерируете схему с помощью инструмента hbm2ddl Hibernate.

  • Вверх: Вы начинаете с существующей базы данных и генерируете сопоставления и классы Java (или просто аннотированные классы Java) из схемы базы данных, используя hbm2hbmxml и hbm2java.

  • Середина: Вы начинаете писать отображения XML Hibernate и генерировать классы DDL и Java, используя hbm2ddl и hbm2java соответственно.

  • Встречаемся посередине: У вас есть существующая модель Java и существующая база данных. Инструменты Hibernate здесь не сильно помогут, вам, скорее всего, придется писать сопоставления вручную и выполнять некоторый рефакторинг базы данных, или кода Java, или использовать какой-то мост. Это наихудшая ситуация.

Итак, как мы видели, Hibernate поддерживает несколько рабочих процессов и предоставляет инструменты для них. И в вашем случае вы ищете инструмент под названием hbm2ddl (также известный как SchemaExport, который является именем класса, реализующего его). Есть несколько способов его использования:

  • Вы можете запустить SchemaExport программно.
  • Вы можете включить автоматический экспорт схемы во время создания SessionFactory, установив для свойства hibernate.hbm2ddl.auto соответствующее значение
  • Вы можете использовать задачу <hbm2ddl> Ant

Ссылки

1 голос
/ 09 сентября 2010

Да, есть свойство hibernate.hbm2ddl.auto. документация гласит:

Автоматически проверяет или экспортирует DDL схемы в базу данных при создании SessionFactory. При использовании create-drop схема базы данных будет отброшена, когда SessionFactory будет закрыт явно.

например. проверить | обновление | создать | create-drop

Есть несколько способов определить это свойство, в зависимости от того, как вы настроили SessionFactory. Спящий режим - это просто добавить:

<property name="hibernate.hbm2ddl.auto">update</property>
...