要性能,还是要设计?
今天到新公司上班,写了一段非常简单的代码,负责把数据库一个表的log逐条显示出来,我写了一个XXLog类,用一个静态方法得到一个Iterator,里面容纳查询到的XXLog:
public class XXLog{
String logname;
Date logtime;
...
public static Iterator getAllLogs(Date d,int start,int num){
...
while(rs.next()){
XXLog alog = new XXLog();
alog.setLogname(rs.getString(1));
...
}
}
}
这种设计有无问题?
我也发现里面new了许多XXLog对象,对性能影响是很大的
于是采用同事建议
public class XXLog{
public Hashmap[] getAllLogs(){
...
while(rs.next()){
Hashmap.put("column1",rs.getString(1));
Hashmap.put("column2",rs.getString(2));
...
}
return Hashmap;
}
将数据保存到一个hashtable数组里面返回给调用端
这样避免了new许多实体对象
不过感觉好像不是面向对象的设计思路
可是性能肯定会好许多
。。。
还有要提到的就是jive的相关设计
jive取多个帖子的方法是这样:
查询到需要的帖子的id保存到一个Iterator里面
然后继承Iterator的next方法,在next方法里面
按照id去得到相关的帖子
这样是否加大了查许的频度?
比如要取得20条帖子,查到20个id后,再
根据每个id去select20次帖子出来
总共检索数据库21次,还不如用hashtable容纳结果
一次传过来