在Spring JDBC中使用Oracle的DBMS_APPLICATION_INFO包

时间:2011-01-06 21:49:29

标签: oracle spring jdbc connection spring-jdbc

我们的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来标记连接吗?

谢谢!

3 个答案:

答案 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>