这样修改OSChina DBManager类 支持多数据源是否合理?

山哥 发布于 2010/11/11 16:18
阅读 325
收藏 1

研究了红薯大哥的 DBManager

发现 DBManager 使用 ThreadLocal 保存单一Connection 对于多数据源系统好像不适应,

比如:在一个 action(Struts2的Action) 中的一个方法中调用了分属2个数据源的DAO:

 

public void saveXX()
{
    // 调用DAO1,DAO1的数据源是 ds1
    DAO1.save(...);
  
    // 调用DAO2,DAO2的数据源是 ds2
    DAO2.save(...);
}

这时,是不是要修改ThreadLocal的变量为 HashMap : key = 唯一标识数据源名称, value = 对应的Connection,使用 DBManager.getConnection( String key ) 来获取对应数据源的Connection 啊??

加载中
0
红薯
红薯

我觉得应该反过来,多个 ThreadLocal 保存在 HashMap 中,key 是数据源名,或者这种环境就不应该使用 ThreadLocal

0
山哥
山哥

引用来自#2楼“红薯”的帖子

我觉得应该反过来,多个 ThreadLocal 保存在 HashMap 中,key 是数据源名,或者这种环境就不应该使用 ThreadLocal

感觉后面的一句话“这种环境就不应该使用ThreadLocal” 正确,或许多数据源下根本没有必要使用 ThreadLocal

呵呵,谢谢红薯大哥

返回顶部
顶部