Ответ 1
Для записи spring.jpa.hibernate.ddl-auto
является специфичным для Spring Data JPA, и это их способ указать значение, которое в конечном итоге будет передано в Hibernate под свойством, который он знает, hibernate.hbm2ddl.auto
.
Значения create
, create-drop
, validate
и update
основном влияют на то, как управление инструментом схемы будет манипулировать схемой базы данных при запуске.
Например, операция update
запрашивает API-интерфейс JDBC-драйвера для получения метаданных базы данных, а затем Hibernate сравнивает создаваемую им модель объекта на основе чтения ваших аннотированных классов или сопоставлений XML-HBM и будет пытаться скорректировать схему на лету.
Например, операция update
будет пытаться добавить новые столбцы, ограничения и т.д., Но никогда не удалит столбец или ограничение, которые могли существовать ранее, но больше не выполняет как часть объектной модели из предыдущего запуска.
Как правило, в сценариях сценариев вы, вероятно, будете использовать create-drop
чтобы создать свою схему, ваш тестовый пример добавляет некоторые макетные данные, вы запускаете свои тесты, а затем во время очистки тестового объекта объекты схемы удаляются, оставляя пустая база данных.
В разработке часто бывает так, что разработчики используют update
для автоматического изменения схемы для добавления новых дополнений при перезапуске. Но снова поймите, это не удаляет столбец или ограничение, которое может существовать в предыдущих исполнениях, которые больше не нужны.
В производстве, часто настоятельно рекомендуется не использовать none
, или просто не указывать это свойство. Это связано с тем, что для администраторов баз данных распространена практика просмотра сценариев миграции для изменений в базе данных, особенно если ваша база данных разделена между несколькими службами и приложениями.