在会话中放置结果集有什么缺点?如果不是哪种方式是最好的方法。我试着把它放在List<Map<String,String>>
中,这不会影响性能吗?
答案 0 :(得分:5)
ResultSet
表示与数据库的开放连接;通常,您希望获取数据并尽快将连接返回池中。在会话中存储ResultSet
会使连接长时间无法关闭,这可能会耗尽池,或者不必要地占用数据库资源。
答案 1 :(得分:3)
来自java.sql
的持久性类不应该距离Web层100英尺。它们永远不应该从持久层中逃脱。您需要将每个ResultSet
加载到创建它的方法范围内的数据结构或对象中并将其关闭。它是一个数据库游标,一种稀缺资源。
您最好的选择不是List<Map<String, String>>
;毕竟,数据库中的每个值都不是String。最好使用地图代表一行的List<Map<String, Object>>
。另一种可能性是Map<String, List<Object>>
,其中每个List<Object>
代表一列。使用对您的用例最方便的一个。最重要的是,使用List<T>
,其中T
是一个以真实方式连接所有列的对象类型。