Я недавно начал изучать спящий режим, и у меня возникли следующие сомнения - PullRequest
0 голосов
/ 15 ноября 2018

Я недавно начал изучать спящий режим, и у меня появились следующие сомнения

Поправь меня, если я ошибаюсь.

  1. Если для hbm2ddl.auto установлено значение create , каждый раз, когда hibernate пытается взаимодействовать с какой-либо таблицей, эта таблица будет отброшена первой.

  2. Поскольку hibernate удаляет таблицу при каждом взаимодействии с ней, если я хочу обновить запись, я не могу настроить значение hbm2ddl как create.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Если вы настроите значение как создание, вы можете обновить запись, но когда ваше приложение не работает, и вы перезапустите его, все изменения исчезнут. Так что на самом деле в этом случае лучше использовать обновление.

В случае обновления он только обновляет схему, вы можете определить некоторый файл схемы sql и использовать его на стороне базы данных, и просто настроить hbm2ddlauto как обновление.

Вот возможные значения hbm2.ddlauto:

  • validate: проверка схемы, без изменений в базе данных.

  • update: обновить схему.

  • create: создает схему, уничтожая предыдущие данные.

  • create-drop: удалить схему, когда SessionFactory закрыт явно, как правило, когда приложение остановлено.

0 голосов
/ 15 ноября 2018

Таблица не удаляется и не воссоздается каждый раз, когда hibernate взаимодействует с ней - она ​​удаляется и воссоздается при инициализации SessionFactory. Обычно это означает, когда ваше приложение запускается. Поэтому, если вы выполняете некоторые тесты, в которых вы хотите начинать с чистой базы данных при каждом запуске приложения, было бы разумно установить hbm2ddl.auto в значение «create».

Подробнее см. В документации сообщества и этот предыдущий вопрос .

...