如果某一查询结果要多次使用,每次都执行SQL查询无疑效率比较低下,所以我考虑把ResultSet放到session里面去,不知道是否可行,如果可行,能否给一段例子?多谢!

解决方案 »

  1.   

    封装到集合里,再放在session中吧
      

  2.   

    想法蛮好的,但是如果用户多的话,每个session都会存入resutset,造成服务器内存资源的浪费。可以考虑在全局对象中存储resuleSet
      

  3.   

    resultset是依赖于connection和statement的,如果这两个中有一个关闭了,rs就无效了,如果放在session中,就意味着数据库连接不能关闭,这肯定是不行的
      

  4.   


    说的有道理,你为什么不把resultSet里面的东西取出来,然后再放到Session里面呢?
      

  5.   

    楼主你就能确定两次查询之间数据没有改变,如果数据可能有变动是必须每次都要重新查找的。
    如果确实是服务器启动以后就不再改变的数据,建议放在application对象中,并且是先将ResultSet的数据取出来放在ArrayList或者HashMap中再放入。
    不能放在session中,原因如7楼所说,多用户登录时回浪费服务器内存资源。
    不能直接把ResultSet对象放入,原因如9楼所说,回造成数据库连接资源的浪费,而且访问ResultSet对象肯定没有访问ArrayList或者HashMap对象的速度快。
      

  6.   

    lz说的“查询结果要多次使用”是什么意思?
    说具体点看看有什么办法解决。放到session里面是万万使不得的。
      

  7.   

    用的时候取,不用了就放回去
    放session只会增加系统负担
      

  8.   

    把你查询出来的结构集遍历保存到list里面,然后需要的时候就从list里面拿出来,list也可以放到session里面供多个页面共享数据
      

  9.   

    ResultSet当然不能放到session当中,session中的数据会常驻系统内存,用户越多,系统开销越大。一般情况下我们只把登陆的用户信息放到session里。慎用session!
      

  10.   

    感谢大家的帮助!现在的问题是, 数据库表中有一列时间,一列是XML数据,XML中包含若干项不同的数据值。用户需要根据这些数据绘制曲线,而且每项数据是单独的图片,用户一次提交,返回若干张jfreechart生成的图片,目前是一个图片对应一个servlet,这样的话,实际是一个记录集的重复使用。假设XML数据中有数据项A,B,C,D,E,F,G;图1需要数据项A,图2需要B,以此类推。这样的话,实际是去用了同一个记录集中XML数据的不同内容,如果每张图片都返回一个记录集的话,感觉是对数据库资源的浪费啊。请问这种情况有什么好办法么?
      

  11.   

    0,数据结构有点乱,没看太明白。
    1,可以考虑放到一个单例的类结构存储这个重复使用的数据,
    把所有数据保存在内存中。
    之后再用的时候,
    判断如果数据提取条件没变,
    之前又取得过这个数据,就直接那出来用。
    (当然,否则的话就去数据库里找出来,然后在放在上面说的地方)其实每次去取也不会很浪费资源。
    (还有db pool呢不是)
    就算把ABCD拆到每个字段里保存,
    只不过是数据库服务器来过滤。lz的数据结构,只不过是在程序里过滤。按照现在的硬件水平,
    只要程序不要有漏洞。
    应该没问题吧...我想good luck