现在有这样一个需求每个在网站注册的用户都要为他们建立一个套帐,也就是建立一个数据库现在用户登陆时要根据数据库名连到对应的数据库,可以做到吗?struts+spring+jpa环境

解决方案 »

  1.   

    如果使用了jdbc那jpa不就不起作用了吗?是不是有相关类库提供改功能呢
      

  2.   

    JPA好像没那么灵活, 关注.....
      

  3.   

    在主数据库里存放每个用户的用户名和密码,数据库名可以用一定规则和用户登录名挂钩。用户登录后先在那个表里取信息拼成连接字符串,再用这个字符串连到他自己的数据库去。By the way, 这样的有多少数据库啊!
      

  4.   

    我的头头就要我这样做喔,
    我也知道拼字符串,但在jpa中
    是这样注入一个实体管理器
    @PersistenceContext protected EntityManager em;
    这个管理器是xml文件配置好了的,动态修改xml要重启服务器也不现实,我就是不知道要怎么切换数据库
      

  5.   

    1、定义一个Filter,通过它在web.xml中拦捷所有与用户数据库有关的url
    public UserFilter implements Filter{
      static ThreadLocal<String> username=new ThreadLocal<String>();
      public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
        username.set((String)((HttpServletRequest)request).getSession(true).getAttribute("user"));//将用户名存入当前线程变量
        chain.doFilter(request,response);
      }
    }2、spring中有个FactoryBean接口,定义一个类实现这个接口,将它的getObject方法返回一个EntityManager对象。用这个类代替你在xml中配置的EntityManager对象public MyEntityManagerFactoryBean implements FactoryBean{
        ................
        public Object getObject(){
           String username=UserFilter.username.get();//这里得到用户名
           //在这里通过用户名和其它参数构造EntityManager对象
        }
        ..........
    }
    完成以上两点,在其它位置操作任意一个用户的数据库都和操作同一个数据库没差别,如果有原有的程序也不用改了。
      

  6.   

    俺说过了,俺头头认为这样速度快,独立数据库安全
    没办法
    谢谢flyxxxxxx 兄台的指教,学习到了