hibernate中的clientidentifier

时间:2013-03-20 20:17:44

标签: java spring hibernate

我正在使用连接准备者的spring配置,其中我需要为获得的每个连接设置客户端标识符,并且可以在数据库策略中使用。这里我有一个问题,当多个请求并行时,由于用户名传递给我正在使用的连接preparer,它会搞乱。

我正在使用弹簧罐正好遵循下面给出的弹簧链接。

http://static.springsource.org/spring-data/jdbc/docs/current/reference/html/orcl.connection.html 我正在做的另一件事是在我的客户端标识符类中有一个变量用户名,并有一个setter和getter方法,并将其作为存储过程的参数调用。

我的问题是,当存在并行事务时,注入的客户端标识符单例bean具有我已经传递的用户名的旧副本。

还有其他更好的选择来设置动态方法将请求中的用户名传递给此bean,并且在检索bean时应该返回正确的值。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

  1. 使用ThreadLocal变量创建实用程序(静态变量/方法)类。提供getter和setter。
  2. 创建一个过滤器,从请求中获取用户。将此用户设置为上面创建的线程本地。
  3. 随时随地调用getter(例如,在调用您引用的link中的可调用语句之前构建'prepSql'时)。