Как я это делаю, я читаю значение из внешнего файла конфигурации, когда создаю фабрику сессий, надеюсь, это поможет:
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 каждый раз.