我们的 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 JDBC 中,有没有办法像我们现在一样在后台调用 DBMS_APPLICATION_INFO,传递一个用来标记连接的字符串?
谢谢!