致板橋:關於"查詢資料庫後是返回ResultSet還是返回Collection?"的幾點問題
看了板橋的"查詢資料庫後是返回ResultSet還是返回Collection?"有以下幾個問題?
1.關閉Collection後ResultSet的可訪問問題?
我的理解是:ResultSet自身並不持有資料, 它僅是在next()呼叫時從資料庫取當前遊標處的記錄, 因此當connection關閉後,ResultSet一定不能使用.你以前關閉Connection後仍能使用ResultSet是因為你可能使用了連線池, 這樣你呼叫Connection.close()時, 實際上系統沒有真正的關閉聯接,它只是被收回聯接池,物理的資料庫連線仍然存在, 故你之後能使用ResultSet.
這樣按你所示例的方式時就有很大的安全問題, 因為在你返回ResultSet時 , connection已經Close(),即connection交由連線池管理器管理, 在最壞的情況下, 如果連線池管理器管理關閉了你剛才釋放的Connection,ResultSet使用時就會發生問題.這種情況有很大的不確定性.
2.statement的浪費問題.
我們知道, 在使用JDBC時不僅Connection佔用資料庫資源,Statement也同樣佔用資料庫資源.
當用你用Statement返回ResultSet之後,為了確保ResultSet能夠在iterator中正常工作, 你肯定不能關閉Statement.因為當Statement關閉時, 會自動關閉它所建立的ResultSet.這一點不管是Statement還是PrepareStatement都遵循.(JDK document中可查到.)
1.關閉Collection後ResultSet的可訪問問題?
我的理解是:ResultSet自身並不持有資料, 它僅是在next()呼叫時從資料庫取當前遊標處的記錄, 因此當connection關閉後,ResultSet一定不能使用.你以前關閉Connection後仍能使用ResultSet是因為你可能使用了連線池, 這樣你呼叫Connection.close()時, 實際上系統沒有真正的關閉聯接,它只是被收回聯接池,物理的資料庫連線仍然存在, 故你之後能使用ResultSet.
這樣按你所示例的方式時就有很大的安全問題, 因為在你返回ResultSet時 , connection已經Close(),即connection交由連線池管理器管理, 在最壞的情況下, 如果連線池管理器管理關閉了你剛才釋放的Connection,ResultSet使用時就會發生問題.這種情況有很大的不確定性.
2.statement的浪費問題.
我們知道, 在使用JDBC時不僅Connection佔用資料庫資源,Statement也同樣佔用資料庫資源.
當用你用Statement返回ResultSet之後,為了確保ResultSet能夠在iterator中正常工作, 你肯定不能關閉Statement.因為當Statement關閉時, 會自動關閉它所建立的ResultSet.這一點不管是Statement還是PrepareStatement都遵循.(JDK document中可查到.)
相關文章
- 關於:查詢資料庫後是返回ResultSet還是返回Collection資料庫
- 查詢資料庫後是返回ResultSet還是返回Collection? (轉)資料庫
- 查詢資料庫後是返回ResultSet實現中遇到的問題資料庫
- banq老師,關於將ResultSet封裝成List返回的問題封裝
- 關於資料庫查詢業務的幾點思考資料庫
- 關於下拉選單查詢資料庫的問題資料庫
- ajax返回json格式資料總是有問題,原因是bom頭資訊JSON
- 記一次關於Laravel model查詢返回大量資料的效能優化Laravel優化
- 請教資料的返回問題
- 關於EJB查詢返回值的解決方法 (轉)
- oracle中基於ROWNUM的查詢的返回Oracle
- 關於介面返回BOM頭處理的問題
- JAVA資料庫處理(連線,資料查詢,結果集返回)Java資料庫
- Hibernate查詢後返回的集合物件中每個物件是什麼型別的?物件型別
- 返回部分結果後,才報單行子查詢返回多行。
- 關於Room資料庫,拼寫模糊查詢語句遇到的問題OOM資料庫
- JAVA關於判斷年份是閏年還是平年的問題Java
- Laravel 集合 where 返回的資料格式問題Laravel
- 關於快取與資料查詢次數的問題快取
- 基於 protobuf 的 websockets 接收伺服器返回資料後,解碼問題請教Web伺服器
- 關於Redis的問題探討(二):Range方法返回的物件是LinkeHashMap以及轉換辦法Redis物件HashMap
- 關於 0 == ‘aa’,返回 1 的面試題面試題
- 關於如何使`(a === 1 && a === 2 && a === 3)`返回`true`問題的思考
- SpringBoot分頁查詢 頁碼問題導致返回結果數量為0Spring Boot
- 重新開貼!探討web應用中ResultSet返回的資料表示Web
- 轉賬問題是屬於業務問題還是屬於技術問題?
- 關於Oracle資料庫的時間查詢Oracle資料庫
- 自定義導航欄返回按鈕導致返回手勢失效問題
- 併發查詢資料庫問題資料庫
- 關於圖片存入硬碟目錄還是存入資料庫硬碟資料庫
- MYSQL INNODB中表資料的返回順序問題MySql
- 關於Hibernate的查詢問題
- 關於快取的問題,請板橋大哥指點一下快取
- 【轉載】關聯式資料庫還是NoSQL資料庫資料庫SQL
- 關於Oracle資料庫與MySQL資料庫的幾點區別Oracle資料庫MySql
- 資料庫是平替還是改造?資料庫
- Elasticsearch如何做到億級資料查詢毫秒級返回?Elasticsearch
- 關於資料庫批次查詢的一個想法資料庫