【发布时间】:2011-10-06 23:11:02
【问题描述】:
将结果集放在会话中的缺点是什么?如果不是,那是最好的方法。我尝试将它放在List<Map<String,String>> 中,它不会影响性能吗?
【问题讨论】:
将结果集放在会话中的缺点是什么?如果不是,那是最好的方法。我尝试将它放在List<Map<String,String>> 中,它不会影响性能吗?
【问题讨论】:
ResultSet 表示与数据库的打开连接;通常,您希望将数据取出并尽快将连接返回到池中。在会话中存储ResultSet 可能会导致连接长时间不会关闭,这可能会耗尽池,或不必要地占用您的数据库资源。
【讨论】:
来自java.sql 的持久性类不应位于 Web 层的 100 英尺范围内。他们永远不应该逃离持久层。您需要将每个ResultSet 加载到创建它的方法范围内的数据结构或对象中并关闭它。它是一种数据库游标,一种稀缺资源。
你最好的选择不是List<Map<String, String>>;毕竟,数据库中的每个值都不是字符串。最好使用 List<Map<String, Object>> ,其中 Map 表示一行。另一种可能性是Map<String, List<Object>>,其中每个List<Object> 代表一列。使用对您的用例最方便的一种。最重要的是,使用List<T>,其中T 是一个对象的类型,它以真正的方式关联所有这些列。
【讨论】: