我觉的第一种方法

没有必要new那么多的对象

你实现一个Iterator接口,

每次调用next()时,

返回一个log对象,然后把log = null;

下次调用next()时,重复使用这个log对象

log可用单例模式,这样就只有一个log对象了

别吃多了撑的,在那个循环里面多建几个值对象返回回去没有什么不对的,性能上也根本不成问题,除非你一下子返回成千上万条记录。(如果这样子的话,那这个查询的设计要求肯定是有问题的了)像这种典型的 DAO模式只有两个选择:要么用 POJO返回,要么用通用的ValueObject容器返回,两者对于对像创建上的开销都是一样的,而一般通用的 ValueObject容器会有更多的运行时开销(想想对象的造型、以及按字符去查找值的开销.)

不要在一两个小对象的创建上花费太多的时间去考虑了,按这种思想走下去的话,大家去看看 jdk的源码会发现有太多的地方不考虑性能了。

直接返回RowSet

先设计,后性能。针对性能瓶颈考虑,没必要处处做到性能最好。