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

StackOverflow https://stackoverflow.com/questions/3674322

  •  01-10-2019
  •  | 
  •  

Вопрос

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

использованная литература

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top