如果要考虑性能或设计,应该从日志开始分析,一般日志的错误类型是比较少的(大系统另计),抛出日志的对象也是有限的,如果预先取出这些东西,然后根据POLO,最后组装成List返回。
POJO = plain old java object
另外,我看见一些代码例子中有很多的:
|
不知这只是习惯还是和性能有关?我习惯了写 obj != null 了。
if("".equals(str)){
...
}
"".equals(str)
如果写成
str.equals("")
那么如果str是null,就会抛NullPointerException,而前者则不会。
我问的是null == obj 和 obj == null 的差别,或许就是习惯问题?
List result = null;
String sql = null;
sql = "SELECT * FROM contact WHERE login_id=? ";
stmt = conn.prepareStatement(sql);
stmt.setString(1, loginId);
rs = stmt.executeQuery();
result = readContactFromResultSet(rs);
private List readContactFromResultSet(ResultSet rs)
{
List result = new ArrayList();
try {
while (rs.next()) {
MutableContactModel miblm = new MutableContactModel()
miblm.setId(...)...//从rs中赋值给对象miblm result.add(miblm);
}
return result;
} }
/**
行吗?
List result = null;
String sql = null;
sql = "SELECT * FROM contact WHERE login_id=? "; //分页在sql中实现
stmt = conn.prepareStatement(sql);
stmt.setString(1, loginId);
rs = stmt.executeQuery();
result = readContactFromResultSet(rs);
return result
返回一个List;
private List readContactFromResultSet(ResultSet rs)
{
List result = new ArrayList();
try {
while (rs.next()) {
MutableContactModel miblm = new MutableContactModel()
miblm.setId(...)... //从rs中赋值给对象
miblm result.add(miblm);
}
return result;
} }
/**
行吗?
我很想知道你说的方法是否能正常运行?
还有你说的方法运行的效率客户是否已经接受?
如果这两条都 OK,我建议你不要花这么多时间去想如何优化性能了。
用了模式的代码,自己都容易晕,对象关系无端地添了很多,没有必要。
> 涂梢苑⑾执砦螅绻obj=null则必须通过调试时才能发现?> 误吧
有理!
嗯?乱码?banq怎么回事?
我记得JIVE里是有CACHE的,不是每次都新查询一次ID,先检查CACHE
>
> "".equals(str)
>
> 如果写成
>
> str.equals("")
>
> 那么如果str是null,就会抛NullPointerException,而前者?> 不会。
> 我问的是null == obj 和 obj == null
> 的差别,或许就是习惯问题?
这是一个备受推崇的c/c++的编程习惯,避免开发人员在写obj==null这样的语句的时候不会因为疏忽而写成obj=null的错误,这样就变成另外一种含义了,而且很难觉察。java里面则不用担心这样的问题。