【问题标题】:hibernate - how to change properties at runtimehibernate - 如何在运行时更改属性
【发布时间】:2013-07-21 17:05:55
【问题描述】:

我正在尝试更改 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 看起来总是一样的。

【问题讨论】:

    标签: java database hibernate


    【解决方案1】:

    要使其正常工作,您应该使用该 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 文件。

    【讨论】:

      【解决方案2】:

      更新配置会更新已从配置文件中读取到内存中的配置。它不会更新文件本身(在大多数情况下,它是只读的,因为从 war 或 jar 文件中读取)。

      【讨论】:

        猜你喜欢
        • 2011-09-20
        • 1970-01-01
        • 2018-01-13
        • 2018-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-14
        相关资源
        最近更新 更多