Обновление схемы базы данных с помощью весенней загрузки в спящем режиме - PullRequest
0 голосов
/ 06 мая 2018

Можно ли обновлять схему базы данных при каждом запуске программы? Я использовал автоматическое обновление ddl, но иногда он не добавляет и не удаляет столбцы, поэтому мне нужно отредактировать до ddl-auto=create, затем вернуться к =update и выполнить обновление схемы. Почему он не обновляет схему последовательно, я бы предпочел не использовать инструмент миграции, пока не приблизился к производству. Поэтому в идеале, когда я добавляю поле к объекту или удаляю его, он должен просто попытаться обновить схему при следующем запуске программы.

spring.jpa.hibernate.ddl-auto=update

1 Ответ

0 голосов
/ 06 мая 2018

Как я это делаю, я читаю значение из внешнего файла конфигурации, когда создаю фабрику сессий, надеюсь, это поможет:

private Properties hibernateProperties() 
{
    Properties properties = new Properties();
    properties.put("hibernate.connection.driver_class","net.sourceforge.jtds.jdbc.Driver");
    properties.put("hibernate.dialect", "org.hibernate.dialect.SQLServerDialect");

    if (environment.getProperty("dbReset").compareTo("ON") == 0)
    {
        properties.put("hbm2ddl.auto", "create");
        properties.put("hibernate.hbm2ddl.auto", "create");
    }

    properties.put("javax.persistence.validation.mode", "none");
    properties.put("hibernate.jdbc.batch_size", "50");
    properties.put("hibernate.cache.use_second_level_cache", "false");
    properties.put("hibernate.c3p0.min_size", "50");
    properties.put("hibernate.c3p0.max_size", "100");
    properties.put("hibernate.c3p0.timeout", "300");
    properties.put("hibernate.c3p0.max_statements", "50");
    properties.put("hibernate.c3p0.idle_test_period", "3000");

    return properties;        
}

Это позволяет мне полностью сбросить БД, если я внес структурные изменения в базовую БД при добавлении новых функций, например. У меня также есть метод для создания тестовых данных, который работает аналогичным образом.

Вы заметите, что у меня там 2 свойства. Это было давно, но я, кажется, вспоминаю подобные проблемы, когда у меня был только один. Я точно знаю, что если я добавлю столбец к объекту и мой режим dbReset будет включен, обо всем позаботится обо мне Hibernate каждый раз.

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