Является ли хорошей практикой разрешать Hibernate создавать таблицы автоматически, используя <property name = "hbm2ddl.auto"> create </property>? - PullRequest
3 голосов
/ 21 сентября 2010

Я знаю, что добавление "hbm2ddl.auto" = создать Hibernate создаст таблицы, автоматически считывающие отображение из hbm / аннотации. Пожалуйста, дайте мне знать, если это хорошая практика и почему?

Ответы [ 2 ]

3 голосов
/ 21 сентября 2010

Если вы используете его в тестовой среде (если это возможно, используя базу данных в памяти, такую ​​как h2 - да, это просто отдельный jar файл), может быть хорошей идеей (убедитесь, что у вас нет настроек, связанных с производством)

Совет, полученный из книги Hibernate In Action, который также можно применить:

Мы видели пользователей Hibernate , пытающихся использовать SchemaUpdate для автоматического обновления схемы производственной базы данных. Это может быстро закончиться катастрофой и не будет разрешено вашим администратором базы данных .

Если вы просто хотите сгенерировать схему , предпочтите использовать SchemaExport (класс за кулисами hbm2ddl)

AnnotationConfiguration configuration = new AnnotationConfiguration();

configuration
.addAnnotatedClass(<TYPE_YOUR_CLASS>.class)
.setProperty(Environment.USER, <TYPE_YOUR_USER>)
.setProperty(Environment.PASS, <TYPE_YOUR_PASSWORD>)
.setProperty(Environment.URL, <TYPE_YOUR_URL>)
.setProperty(Environment.DIALECT, <TYPE_YOUR_DIALECT>)
.setProperty(Environment.DRIVER, <TYPE_YOUR_DRIVER>);

SchemaExport schema = new SchemaExport(configuration);
schema.setOutputFile("schema.sql");

schema.create(<DO_YOU_WANT_TO_PRINT_TO_THE_CONSOLE>, <DO_YOU_WANT_TO_EXPORT_THE_SCRIPT_TO_THE_DATABASE>);

Вы также можете включить свойства Java в соответствии с целевым компьютером

-Dprofile=development

или

-Dprofile=production

Подход показан здесь здесь (Хотя он использует Spring, Spring имеет встроенную поддержку Hibernate)

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

Я всегда использовал Hibernate таким образом.Пока любой используемый вами API может разумно взаимодействовать с ним (и большинство может), я не вижу смысла делать всю эту работу самостоятельно, когда Hibernate может сделать это для вас.

Это приятновещь о фреймворках, таких как Hibernate.Они экономят вам много времени, они обычно хорошо документированы, а все остальное разработано так, чтобы «хорошо с ними играть».Все, что вам нужно сделать, это доверять им:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...