我们的webapps目前直接对我们的Oracle数据库进行JDBC调用。我们使用静态getConnection(String client)方法对DBMS_APPLICATION_INFO包的调用标记每个连接,例如。
CallableStatement pstmt = conx.prepareCall("{call DMBS_APPLICATION_INFO.SET_CLIENT_INFO(?)}");
pstmt.setString(1, "my client");
pstmt.executeUpdate();
这已经被证明是有用的,当我们切换到Spring JDBC时,我们希望继续这样做。
我认为如果我们将每个查询都作为一个事务,那么在执行查询(或查询)之前调用DBMS_APPLICATION_INFO会有效,但这需要将上面的代码添加到我们现在获得连接的每个地方。在事务之外,它似乎不可能,因为Spring JDBC打开并关闭与每个查询的连接。
在Spring中,有一种方法可以像我们现在一样调用DBMS_APPLICATION_INFO,并传递一个String来标记连接吗?
谢谢!
答案 0 :(得分:0)
你有没有看过Spring Aspects?
答案 1 :(得分:0)
我的问题的答案是否定的。如果我今天正在处理这个问题,我可能会考虑为Tomcat的JDBC池编写一个Interceptor或包装驱动程序。但实际上,我很可能会放弃使用DBMS_APPLICATION_INFO。虽然很高兴它在操作上没用,但不值得添加代码和复杂性。
答案 2 :(得分:0)
可能是因为您写的是DMBS_APPLICATION_INFO
而不是DBMS_APPLICATION_INFO
(请注意“ D MB S”而不是“ D BM S”)。< / p>