2011-10-06 88 views
1

將結果集放在會話中有什麼缺點?如果不是這是最好的方式。我試圖把它放在一個List<Map<String,String>>,它不影響性能?會話中的結果集

回答

5

A ResultSet代表到數據庫的開放連接;通常您希望獲取數據並儘快將連接返回到池中。在會話存儲ResultSet留下了一種可能性,即連接不會被關閉很長一段時間,這可能耗盡池,或不必要地佔用你的數據庫資源。

3

來自java.sql的持久性類別不應超過網絡層的100英尺範圍內。他們永遠不應該從持久層逃脫。您需要將每個ResultSet加載到創建該方法範圍的數據結構或對象中並關閉它。這是一個數據庫遊標,一個稀缺資源。

你最好的選擇不是List<Map<String, String>>;畢竟,數據庫中的每個值都不是一個String。最好使用List<Map<String, Object>>,其中Map表示一行。另一種可能性是Map<String, List<Object>>,其中每個List<Object>代表一列。使用最方便的用例。最重要的是,使用List<T>,其中T是綁在一個真實的方式,所有這些列的對象的類型。