banq老师,关于将ResultSet封装成List返回的问题

这是我写的查询方法


public static List executeQuery(String sql) {
Statement stmt = null;
Connection con = null;
ResultSet rst = null;
List resultList = new LinkedList();
try {
con = DBConnection.createConnection();
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rst = stmt.executeQuery(sql);
int n = rst.getMetaData().getColumnCount();//取得总列数
while ( rst.next() ) {
Map map = new HashMap();
for (int i = 1; i <= n; i++) {
map.put(rst.getMetaData().getCatalogName(i), rst.getObject(i));
}
resultList.add(map);
}
} catch (SQLException e) {
e.printStackTrace();
return null;
} finally {
DBConnection.releaseResultSet(rst);// 释放资源
DBConnection.releaseStatement(stmt);
DBConnection.releaseConnection(con);
}
return resultList;
}

把ResultSet包装成List返回
在这里要循环n次,把每条记录的每个字段放进Map中,又循环n次再把每个Map对象放到List中,最后返回
返回读取时,又要转成iterator循环n次遍厉元素,再把每个元素转换成Map对象读取key-value对
如果查询的是大量的数据,这样频繁的调用,n次的转来转去,会不会增加开销呢?我下载你的jivejdon3.0,找了一点您操作数据库的部分,也有这样频繁的操作,这个问题,我一直不解
banq老师可否指点一二
发生这种频繁操作现象只能是一次还可以,如果这种现象本身也很频繁发生,就影响性能了,所以使用缓存阻止这种现象频繁发生,以最少运行可能性换取最大性能
banq老师您的意思是,通常只是会这样的查询一次.
第一次查询后就把结果放在内存中缓存起来,以备下次使用,就不用再频繁的查询数据库了,
哦,原来如此,先前我一直不明白您们这些前辈高人说的缓存,对象池之类的话,原来就是这个道理
banq老师再次受教了,谢谢您