Каковы возможные значения конфигурации Hibernate hbm2ddl.auto и что они делают

Вы можете использовать Collections.nCopies для создания коллекции заполнителей и присоединиться к ним с помощью String.join:

List<String> params = getParams();
String placeHolders = String.join(",", Collections.nCopies(params.size(), "?"));
String sql = "select * from your_table where some_column in (" + placeHolders + ")";
try (   Connection connection = getConnection();
        PreparedStatement ps = connection.prepareStatement(sql)) {
    int i = 1;
    for (String param : params) {
        ps.setString(i++, param);
    }
    /*
     * Execute query/do stuff
     */
}
1015
задан Vlad Mihalcea 15 April 2019 в 15:24
поделиться

3 ответа

Свойство конфигурации называют hibernate.hbm2ddl.auto

В нашей среде разработки, которую мы устанавливаем hibernate.hbm2ddl.auto=create-drop, чтобы отбросить и создать чистую базу данных каждый раз, когда мы развертываемся, так, чтобы наша база данных была в известном состоянии.

В теории, можно установить hibernate.hbm2ddl.auto=update для обновления базы данных с изменениями в модели, но я не положил бы этому на производственной базе данных. Более ранняя версия документации сказала, что это было экспериментально, по крайней мере; я не знаю текущего статуса.

Поэтому для нашей производственной базы данных, не устанавливайте hibernate.hbm2ddl.auto - значение по умолчанию не должно вносить изменения базы данных. Вместо этого мы вручную создаем сценарий обновления DDL SQL, который применяет изменения от одной версии до следующего.

153
ответ дан Peter Hilton 15 April 2019 в 15:24
поделиться
  • 1
    В то время как Вы правы со способностью применить стили на основе данных ограниченного контекста I' d очень предпочитают только переключать стили полностью - иначе они становятся слишком смешиваемыми... – Matthew Savage 5 January 2009 в 04:52

Я использовал бы liquibase для обновления Вашего дб. функция обновления схемы hibernate действительно только в порядке. для разработчика, в то время как они разрабатывают новые возможности. В производственной ситуации обновление дб должно быть обработано более тщательно.

51
ответ дан Pat 16 April 2019 в 01:24
поделиться

Из документации сообщества :

hibernate.hbm2ddl.auto Автоматически проверяет или экспортирует DDL схемы в базу данных при создании SessionFactory. С помощью create-drop схема базы данных будет удалена при явном закрытии SessionFactory.

например, validate | обновление | создать | create-drop

Итак, список возможных вариантов:

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

Эти параметры кажутся инструментами разработчика и не облегчать базы данных производственного уровня, вы можете взглянуть на следующий вопрос; Hibernate: hbm2ddl.auto = update in production?

1044
ответ дан 19 December 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: