其实你要的是开发速度。

如果要考虑性能或设计,应该从日志开始分析,一般日志的错误类型是比较少的(大系统另计),抛出日志的对象也是有限的,如果预先取出这些东西,然后根据POLO,最后组装成List返回。

呵呵,突然发现有好多名词看不懂,请问什么是 POLO? 好像汽车的名字

你说的是PO*J*O吧,呵呵。
POJO = plain old java object


另外,我看见一些代码例子中有很多的:



if(null != obj){
...
}

不知这只是习惯还是和性能有关?我习惯了写 obj != null 了。

实惯问题吧,如:

if("".equals(str)){
...
}

不一样,你的代码

"".equals(str)

如果写成

str.equals("")

那么如果str是null,就会抛NullPointerException,而前者则不会。
我问的是null == obj 和 obj == null 的差别,或许就是习惯问题?

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;
} }

/**

行吗?

TO: chinahero

我很想知道你说的方法是否能正常运行?
还有你说的方法运行的效率客户是否已经接受?

如果这两条都 OK,我建议你不要花这么多时间去想如何优化性能了。

我觉得太讲究设计不好。尽量用一些简单易懂,代码命名良好的代码,远比用什么模式好维护多了。除非必须用用模式,那是逼到那里了。
用了模式的代码,自己都容易晕,对象关系无端地添了很多,没有必要。

在我看到得jakarta那些代码之中,一般是将常量写在前面,而将变量写在后面,刚开始得时候不觉得如何,但是后来仔细想想,这样可以避免运行时候的错误,比如NullPointerException之类的。

> null==obj能减少书写错误吧,例如如果将==写成=时,编译时
> 涂梢苑⑾执砦螅绻obj=null则必须通过调试时才能发现?> 误吧

有理!

嗯?乱码?banq怎么回事?

如果不是分布式应用,没必要用Transfer Object了吧。
我记得JIVE里是有CACHE的,不是每次都新查询一次ID,先检查CACHE

> 不一样,你的代码
>
> "".equals(str)
>
> 如果写成
>
> str.equals("")
>
> 那么如果str是null,就会抛NullPointerException,而前者?> 不会。
> 我问的是null == obj 和 obj == null
> 的差别,或许就是习惯问题?

这是一个备受推崇的c/c++的编程习惯,避免开发人员在写obj==null这样的语句的时候不会因为疏忽而写成obj=null的错误,这样就变成另外一种含义了,而且很难觉察。java里面则不用担心这样的问题。

尽量不要在循环里面初始化对象,可以使用singleton模式,这样你就会只存在一个对象,这样或许会好一点..