What are the possible values of the Hibernate hbm2ddl.auto configuration and what do they do
Каковы возможные значения конфигурации Hibernate hbm2ddl.auto и что они делают
Я действительно хочу узнать больше об обновлении, экспорте и значениях, которые могут быть предоставлены hibernate.hbm2ddl.auto Мне нужно знать, когда использовать обновление, а когда нет? И какова альтернатива?
Это изменения, которые могут произойти через DB:
новые таблицы
новые столбцы в старых таблицах
удаленные столбцы
изменен тип данных столбца
тип столбца изменил свои атрибуты
удаленные таблицы
изменены значения столбца
В каждом конкретном случае какое решение является наилучшим?
hibernate.hbm2ddl.auto Автоматически проверяет или экспортирует DDL схемы в базу данных при создании SessionFactory. С помощью create-drop схема базы данных будет удалена, когда SessionFactory будет явно закрыт.
например, проверка | обновление | создание | create-drop
Итак, список возможных вариантов таков,
validate: проверяет схему, не вносит изменений в базу данных.
только для создания: будет сгенерировано создание базы данных.
удаление: будет сгенерировано удаление базы данных.
create-drop: удаление схемы при явном закрытии SessionFactory, обычно при остановке приложения.
нет: ничего не делает со схемой, не вносит изменений в базу данных
Эти параметры, похоже, предназначены для инструментов разработчика, а не для облегчения работы с базами данных производственного уровня, возможно, вы захотите взглянуть на следующий вопрос; Hibernate: hbm2ddl.auto = обновление в производстве?
Ответ 2
Также есть значение none, чтобы полностью отключить его.
Ответ 3
The configuration property is called hibernate.hbm2ddl.auto
In our development environment we set hibernate.hbm2ddl.auto=create-drop to drop and create a clean database each time we deploy, so that our database is in a known state.
In theory, you can set hibernate.hbm2ddl.auto=update to update your database with changes to your model, but I would not trust that on a production database. An earlier version of the documentation said that this was experimental, at least; I do not know the current status.
Therefore, for our production database, do not set hibernate.hbm2ddl.auto - the default is to make no database changes. Instead, we manually create an SQL DDL update script that applies changes from one version to the next.
Ответ 4
First, the possible values for the hbm2ddl configuration property are the following ones:
none - No action is performed. The schema will not be generated.
create-only - The database schema will be generated.
drop - The database schema will be dropped.
create - The database schema will be dropped and created afterward.
create-drop - The database schema will be dropped and created afterward. Upon closing the SessionFactory, the database schema will be dropped.
validate - The database schema will be validated using the entity mappings.
update - The database schema will be updated by comparing the existing database schema with the entity mappings.
The hibernate.hbm2ddl.auto="update" is convenient but less flexible if you plan on adding functions or executing some custom scripts.