ResultSet工作

时间:2012-07-20 13:33:42

标签: java jdbc resultset

我热衷于深入了解ResultSet的工作原理。    我对ResultSet有很多疑问。    比如表现明智哪一个更好。

 while(rs.next())
{
  //  iterate as well as do call some other functions.
}
  or 
while(rs.next())
{
 // iterate and store the column values in a map
}
// do functions using the map.

因为该表是由许多其他并发程序访问的。

2 个答案:

答案 0 :(得分:1)

它将取决于很多因素。

  • 您的“其他功能”处理密集程度如何。如果处理是最小的那么它并不重要,但它涉及大量的CPU使用,然后延迟处理直到结果集关闭应该提高事务性能。
  • 结果集有多大?如果它相当小,那么将它读入Map就可以了,但是如果它很大并且你的处理将把它处理成一些较小的形式,那么你可能最好在循环中进行处理。

查看免费VisualVM中的CPU和内存分析,或者使用一些基本时序来了解正在发生的事情。

答案 1 :(得分:1)

最好的办法是,通常遵循的标准是将所有值存储到对象中,然后返回该对象。这只不过是数据传输对象(DTO设计模式)。

在第一种情况下,你就是这样做

  1. 建立与数据库的连接。
  2. 执行一些SQL语句,然后获取结果集。
  3. 迭代ResultSet, 在此步骤中:您将调用其他一些功能,我们不知道完成所需的时间。

    主要缺点是长时间按住连接对象并不好,因为某些其他用户可能需要它,当然这是一个最昂贵的用户。