2013-07-21 52 views
3

我試圖更改hibernate.cfg.xml中的屬性,但我的代碼不起作用。休眠 - 如何在運行時更改屬性

public static void changeConfiguration(String login, String password){ 
    Configuration cfg = new Configuration(); 
    cfg.configure(); 
    cfg.setProperty("hibernate.connection.password", password); 
    cfg.setProperty("hibernate.connection.username", login); 

} 

任何想法,爲什麼這是行不通的?我的文件hibernate.cfg.xml看起來總是一樣的。

回答

0

更新配置將更新已從配置文件讀入內存的配置。它不會更新文件本身(大多數情況下,自從從war或jar文件中讀取後,它是隻讀的)。

3

要使其工作,您應該使用該Configuration對象構建您的sessionFactory,然後使用該sessionFactory獲取您的會話。

喜歡的東西:

public static SessionFactory changeConfiguration(String login, String password){ 
    Configuration cfg = new Configuration(); 
    cfg.configure(); 
    cfg.setProperty("hibernate.connection.password", password); 
    cfg.setProperty("hibernate.connection.username", login); 
    SessionFactory sessionFactory = cfg.buildSessionFactory(); 
    return sessionFactory; 
} 

但最後,它不會改變hibernate.cfg.xml文件,它覆蓋或在運行時定義的屬性。如果您不想在hibernate.cfg.xml文件中輸入用戶名和密碼,則應該使用包含這些值的.properties文件。