2017-10-05 87 views
0

我們使用websphere作爲應用程序服務器和spring-data來訪問oracle數據庫。 如果我們在我們的應用程序中調用起始頁面,將從數據庫中並行加載三個不同框架的不同數據和來自的大量標籤。 現在,如果我們在打開起始頁的同時監視數據庫,則打開和關閉不同的數據庫會話。但是,三個會話(獲取標籤)保持打開,但不活動。 我認爲三個會話,因爲我有三個幀,他們都並行地加載了很多標籤。長時間打開數據庫會話

在websphere,spring-data或oracle中是否有一種功能可以識別何時經常執行sql語句並保持會話打開?

或者你知道爲什麼會議保持開放嗎?

回答

0

WebSphere Application Server數據源支持彙集連接並緩存預準備語句。這是默認啓用的。只要您的應用程序正在使用WebSphere Application Server數據源(通過資源注入@Resource或JNDI查找獲得)並將java.sql.PreparedStatement用於SQL命令,則PreparedStatements將保存在緩存中並根據需要重新使用。從你的問題中不清楚你是否想要這種行爲,或者如果你想避免它。如果您希望禁用所有預準備語句的緩存,則可以將數據源的statementCacheSize配置爲0.或者,如果只有您希望避免緩存的特定準備語句,則可以通過編程方式在其上設置JDBC可延遲性提示:

preparedStatement.setPoolable(false); 
+0

爲什麼數據庫會話是打開的,如果該值被分割?每次加載不同的標籤,並不總是相同的。 – bg89

+0

WebSphere Application Server完成的預備語句緩存只涉及緩存java.sql.PreparedStatement,而不是SQL查詢返回的值或參數值。 – njr

+0

我們使用getJdbcTemplate()。call(...)連接到數據庫。這是否也使用緩存?我不會禁用此緩存。我只想知道爲什麼這個會議保持開放。 – bg89