1

我热衷于深入了解 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.

因为该表被许多其他并发程序访问。

4

2 回答 2

1

这将取决于很多因素。

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

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

于 2012-07-20T13:42:44.320 回答
1

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

在第一种情况下,你正在做

  1. 建立与数据库的连接。
  2. 执行一些 SQL 语句,然后通过获取结果集。
  3. 以及 ResultSet 的迭代,在这一步中:您将调用一些其他函数,我们不知道需要多少时间才能完成。

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

于 2012-09-24T06:08:38.080 回答