LINUX.ORG.RU

hibernate


0

0

Каким образом можно во время выполнения программы изменить настройки, указанные в hibernate.cfg.xml ? Например, есть такое содержимое:

... <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/db1</property> <property name="connection.username">user</property> <property name="connection.password">pass</property> <property name="connection.useUnicode">yes</property> <property name="connection.characterEncoding">utf8</property> ...

После старта программы я хочу изменить свойство connection.url. Пробую:

Configuration configuration = new Configuration() .configure() .setProperty("connection.url", "jdbc:mysql://192.168.2.1/db1"); sessions = configuration.buildSessionFactory();

Если вызвать getProperty, то оно вернёт изменённое значение, но хибернейт всё равно будет использовать значение из конфига. Есть вариант решения?

anonymous

Re: hibernate

Простите за форматирование.

Каким образом можно во время выполнения программы изменить настройки, 
указанные в hibernate.cfg.xml ? Например, есть такое содержимое:

...
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/db1</property>
<property name="connection.username">user</property>
<property name="connection.password">pass</property>
<property name="connection.useUnicode">yes</property>
<property name="connection.characterEncoding">utf8</property>
...

После старта программы я хочу изменить свойство connection.url.
Пробую:

Configuration configuration = new Configuration()
.configure()
.setProperty("connection.url", "jdbc:mysql://192.168.2.1/db1");
sessions = configuration.buildSessionFactory();

Если вызвать getProperty, то оно вернёт изменённое значение, но 
хибернейт всё равно будет использовать значение из конфига. Есть 
вариант решения?

anonymous ()

Re: hibernate

Делаешь новую SessionFactory и используешь её. У уже созданной, афаик, нельзя поменять URL.

Legioner ★★★★★ ()
Ответ на: Re: hibernate от anonymous

Re: hibernate

Configuration configuration = new Configuration();
configuration.setProperty("connection.url", "jdbc:mysql://192.168.2.1/db1");
configuration.configure();
sessions = configuration.buildSessionFactory();

Только как то так вроде надо.

Legioner ★★★★★ ()
Ответ на: Re: hibernate от anonymous

Re: hibernate

Как вариант, можно создавать SessionFactory передавая разные конфигурационные файлы.

Пример:

SessionFactory sf = new Configuration() .configure("catdb.cfg.xml") .buildSessionFactory();

SessionFactory sf2 = new Configuration() .configure("catdb2.cfg.xml") .buildSessionFactory();

Falgrim ()
Ответ на: Re: hibernate от Falgrim

Re: hibernate

Да, можно, но так не подойдёт: мне необходимо задавать параметры подключения в runtime — я их получаю из GUI от пользователя. В принципе, в конфиге может и вовсе не быть параметров url, user и password, но вот остальные (диалект, кодировка и т.п.) хотелось бы оставить. А хибернейт так не хочет — он не создаёт фактори, если в конфиге нет этих параметров, а если они там есть — игнориурет их изменение. Пока, как я понял, можно сделать только так: мэппинги оставить в файле и грузить их отдельно, а все настройки задавать из runtime.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.