Как создать схему базы данных с помощью Hibernate - PullRequest
5 голосов
/ 07 мая 2009

После прочтения Hibernate: hbm2ddl.auto = обновление в работе? возникли некоторые вопросы. Прежде всего, причина, по которой я использую Hibernate, заключается в том, чтобы быть независимым от поставщика базы данных (не нужно писать 10 версий «одного и того же» запроса sql, например, tsql против sql).

Моя проблема возникает, когда пришло время создавать схемы базы данных (производственная среда). Насколько я вижу, у меня есть две альтернативы.

  1. hbm2dll = update
  2. чистые сценарии sql (ddl).

Первая альтернатива широко обсуждается в ветке выше. Второй вариант плох, потому что это означает, что я вернулся к своей первой проблеме: «Не хочу создавать SQL-операторы, зависящие от поставщика базы данных». (Это утверждение может быть ложным, если «все» (по крайней мере, поддержка Hibernate для баз данных) реализует DDL (Подмножество SQL, используемое для определения и изучения структуры базы данных.) Равно).

Ответы [ 4 ]

5 голосов
/ 07 мая 2009

Внесите все изменения в режим разработки / подготовки, а также перенесите и выполните сценарии в производство вручную (или автоматически, но не позволяйте Hibernate их запускать). Сценарии могут нуждаться в некоторой настройке, поскольку обновление hbm2ddl охватывает не все случаи.

На самом деле я никогда не позволял hibernate запускать ddl для любой базы данных. Я использую hbm2ddl для генерации текста:

org.hibernate.tool.hbm2ddl.SchemaExport --config=hibernate.cfg.xml --text --format --delimiter=;

org.hibernate.tool.hbm2ddl.SchemaUpdate --config=hibernate.cfg.xml --text --format --delimiter=;
3 голосов
/ 28 октября 2017

Обычно инструменты, которые выводят схему JPA, основаны на инструменте SchemaExport, который читает только статические метаданные.

Существует плагин Maven / Gradle https://github.com/Devskiller/jpa2ddl, который генерирует схему JPA. Включает в себя все свойства, стратегии именования, типы пользователей и т. Д.

Вы также можете использовать его для создания автоматических миграций схемы для Flyway .

1 голос
/ 07 мая 2009

Мне нравится Hibernate (LOT), и я думаю, что он делает какой-то невероятно качественный код, но я бы не отказался от его использования в производственной базе данных, как бы позволил няне-гризли с очень хорошей манерностью. Некоторое время все может идти хорошо, но один случай, когда все идет плохо, это ДЕЙСТВИТЕЛЬНО плохо.

Мое предложение было бы в тестовой среде, чтобы Hibernate генерировал схемы базы данных. Протестируйте их в тестовой среде. Затем перенесите эти сценарии в производственную среду и запустите их. Обратите внимание на специфику там; даже если тесты пройдут фантастически, я ВСЕ ЕЩЕ не позволю Hibernate сойти с ума на рабочем сервере. Возьмите выходные данные схемы Hibernate, протестируйте их и, как только они будут проверены, затем разверните их на рабочем сервере.

...