NutzCN Logo
问答 dao oracle session 动态配置
发布于 2339天前 作者 qq_895c9d88 1845 次浏览 复制 上一个帖子 下一个帖子
标签:

环境:
1. oracle中有对当前连接JDBC连接有个session会话,并可以对会话初始化当前语言环境,从而查出的数据是不同结果
2. 初始化Service的时候是注入同一个dao
3. 每个用户实际是都是使用同一连接池,也就是用户A,所用的dao,是空闲列表中随机一个
4. 系统默认初始化dao语言环境是中文
注:初始化session方案:https://www.cnblogs.com/quanweiru/p/4673105.html

问题:
用户A是中文环境,用户B是英文环境,调用同一个请求,在Service中也是同一个接口,如何根据用户当前语言的不同,dao查的数据是同一语言环境,
是每次查询的时候,切换语言,查询数据,切换回去,这样并发的时候,是否会影响到别的用户查询?

求解

4 回复

语种多吗?

目前暂时只有中文和英文

之前有类似的需求,说的是同一个连接池,然后不同的连接用不同的scheme

当前我想到两个办法:

第一种是, 为不同的语种建不同的数据源和dao实例,druid支持connectionInitSqls

第二种是, 把原有的DataSource封装一层, 在getConnection方法内, 读取用户信息, 改变语种

public class MyDruidDataSource extends DruidDataSource {

           public Connection getConnection() {
                   Connection conn = super.getConnection();
                   // 修改session
                   Mvcs.getSession xxxxxxxxx
                   return conn;
           }
}

这个有点粗暴,我试下,谢谢了

添加回复
请先登陆
回到顶部