我的问题是:我做了一个平台,这个平台的多个客户要使用一台服务器。我用的数据库是oracle,这样的话,我想让hibernate 配置上多个数据库连接,而这些数据库是相同表名,只是库名不同。我查了其他说法:
方案一:   
  写两个hibernate.cfg.xml   
  使用数据库a的时候   
  Configuration   cfg_a=new   Configuration().configure(hibernate.cfg_a.xml);   
  使用数据库b的时候   
  Configuration   cfg_a=new   Configuration().configure(hibernate.cfg_b.xml);   
  方案二:   
  使用一个能操作两个数据库的账号,在?.hbm.xml映射文件中的class标签中指定catalog为数据库名可是好像对于我的问题不太适合。不知道是否有高手能解决我的问题??

解决方案 »

  1.   

    可以考虑使用Spring管理。
    设置2个Spring的Applicationcontext1.xml和Applicationcontext2.xml
    分别注入不同的数据库配置。
    通过
    ApplicationContext ctx =new ClassPathXmlApplicationContext("Applicationcontext1.xml");
    ApplicationContext ctx =new ClassPathXmlApplicationContext("Applicationcontext2.xml");
    获取不同数据库的Bean。
      

  2.   

    顶1楼   spring是方便些
      

  3.   

    搞不清你现在是多数据库同样结构还是多用户共用一个数据库。用户名不同则指定hbm里的schema,数据库不同则指定hbm里的catalog。你自己试一下,看看那种合适你的。如果你切换catalog搞不定的话,在hbm里指定schema看看?
      

  4.   

    方案一:  
      写两个hibernate.cfg.xml  
      使用数据库a的时候  
      Configuration  cfg_a=new  Configuration().configure(hibernate.cfg_a.xml);  
      使用数据库b的时候  
      Configuration  cfg_a=new  Configuration().configure(hibernate.cfg_b.xml);  
    这样应该可以满足你的要求啊!~
      

  5.   

    谢谢大家的回复
    方案一:  
      写两个hibernate.cfg.xml  
      使用数据库a的时候  
      Configuration  cfg_a=new  Configuration().configure(hibernate.cfg_a.xml);  
      使用数据库b的时候  
      Configuration  cfg_a=new  Configuration().configure(hibernate.cfg_b.xml);  我就是照着这个方案进行的,可是来回切换使用的过程中发生了hbm配置文件 被hibernate重复加载的错误。我一看这个错误就头疼。不知是我哪步落下没有设置的原因,还是怎么样。
      

  6.   

    我也是刚刚学习spring,我觉得使用spring解决应该是没问题的`hehe``试下``
      

  7.   

    哈哈,我的办法更笨,自己解析xml,再动态改里面的url然后动态生成配置文件.
    哎,谁叫我的那破项目要动态生成一堆呢.