2011-01-06 45 views
0

我們的web應用程序當前直接對我們的Oracle數據庫執行JDBC調用。我們通過靜態getConnection(String client)方法調用DBMS_APPLICATION_INFO包來標記每個連接,例如,在Spring JDBC中使用Oracle的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,傳遞一個字符串來標記連接?

謝謝!

回答

0

我的問題的答案是否定的。如果我今天正在處理這個問題,我可能會考慮爲Tomcat的JDBC池編寫攔截器或封裝驅動程序。但實際上,我很可能會放棄使用DBMS_APPLICATION_INFO。儘管它不具有操作性,但不值得添加代碼和複雜性。