RT,这是以前的项目,用户新提出的需求。假设有A,B,C 3个库这3个库中表的数据结构全部一样只是记录不一样。
首先用户要先进入系统选择对应的库,之后进行浏览数据。因为是以前的项目,只针对一个库。
我的思路是改写SessionFactory中的getSession方法,让他在return之前根据一些条件判断,具体选择那个库
但是遇到了几个问题,首先是getSession是静态方法无法引用非静态常量,如果我放一个静态常量,每次根据这个判断但是如果有多个用户,这个静态常量就会被频繁的改变。难免发生错误。
其次,我考虑用一个非静态常量,但是又无法保证这个非静态常量一直存在,同时也无法在静态方法中调用,
请教一下大家碰见过这杨的问题没有?怎样改变最少的代码来达到效果,谢谢!

解决方案 »

  1.   

    一个project下配置多个数据源,程序控制切换下就ok
      

  2.   

    getsession是不可以的,因为在启动的时候就已经加载数据库连接配置了。可以配置多个数据源。这样每个数据源下都会有sessionFactory。然后在根据系统登录的角色去调用不同的sessionFactory获取数据库连接。目前能想到的就这些,当然这样的方式显然不好,增加了内存的负担,因为一次加载了很多重量级的模块(多个数据源).
      

  3.   

    写三个cfg配置文件,实例化三个SessionFactory,根据用户来判断。