动态修改hibernate.cfg.xml 中的属性

声明: 非原创

需求:

出于某种目的,我们要修改 hibernate.cfg.xml  文件中的一些属性

        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="connection.url">jdbc:oracle:thin:@localhost:test</property>
        <property name="connection.username"></property>
        <property name="connection.password"></property>

 

需要在程序中动态生成,或者读取其他配置文件。

分析:

需要重hibernate加载配置文件的步骤开始,找到能修改的地方。

查看源码:

static {
    try {
         configuration.configure(configFile);
         sessionFactory = configuration.buildSessionFactory();
   } catch (Exception e) {
         System.err.println("%%%% Error Creating SessionFactory %%%%");
         e.printStackTrace();
   }
}

这段代码说明在实例化HibernateSessionFactory时,就将hibernate.cfg.xml文件读入并配置.

跟踪configuration.configure(configFile)及configuration.buildSessionFactory();后发现,hibernate将xml文件分析后将属性置为properties交到DriverManagerConnectionProvider连接数据库,
那么,在provider连接数据前修改properties中的值就可以达到动态配置的目的。

实现:

修改代码

String configFile = "hibernate.cfg.xml";//配置文件位置
  configuration.configure(configFile);
configuration.setProperty("hibernate.connection.username", "oneboss");//修改了数据库连接的用户名
  SessionFactory sessionFactory = configuration.buildSessionFactory();

 

测试成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值