2011-10-06 46 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是绑在一个真实的方式,所有这些列的对象的类型。