cuiyi's blog(崔毅 crazycy)

记录点滴 鉴往事之得失 以资于发展
数据加载中……

Spring带来的“循序方法”

非常感谢你的阅读,如果你觉得好或者对你有帮助,请积极给一个留言反馈以示鼓励。 

         
选择一种架构、一种技术的依据是什么?
Rod Johnson 认为,应该是基于实践的依据、来自历史项目或亲自试验的经验,而不是任何形式的偶像崇拜或者门户之见。

如果说 Spring 发起了对 J2EE 常规应用的挑战,那其立足的基础就是实践,把大量实践中的经验累积成一种最佳实践,把这种最佳实践融合到 J2EE 应用的方方面面。

事实胜于雄辩,用具体的示例进行阐述:

JDBC 操作中,我们用到的无非是增、删、改、查 CRUD4 个功能,每个功能都覆盖了 1 建立连接 2 构造 PrepareStatement 对象 3 进行操作 如果有异常回滚 4 关闭连接。

以查询为例:

Connection conn=null;

PrepareStatement stmt = null;

ResultSet rs = null;

List results = null;

try {

conn = getConnection();

conn.setAutoCommit(false);

stmt = conn.preparedStatement(sql);

rs = stmt.executeQuery();

results = new ArrayList();

while(rs.next()) {

    Object vo = new Object();

    vo.setXX(rs.getXType(fieldName1));

    vo.setYY(rs.getYType(fieldName2));

       ……

       results.add(vo);

}

} catch(Exception ex) {

conn.rollback();

} finally {

if (null != rs) rs.clse();

if (null != stmt) stmt.clse();

if (null != conn) conn.clse();

}

 

对于:

Object vo = new Object();

 vo.setXX(rs.getXType(fieldName1));

 vo.setYY(rs.getYType(fieldName2));

……

我们实际开发中常常使用 rs2VO(Resultset rs) 私有函数来进行转化;

这个过程, Spring 提供了 RowMapper 接口,其方法是 public Object mapRow ResultSet rs, int index )异曲同工。


对于 while(rs.next()) {

    Object vo = new Object();

    vo.setXX(rs.getXType(fieldName1));

    vo.setYY(rs.getYType(fieldName2));

       ……

       results.add(vo);

}

这个过程:

Spring 中用 new RowMapperResultReader(new RowMapper()) 来取代;


外加其提供的避免大量重复代码的回调函数,因此整个过程最后只剩下:

jdbcTemplate.query(sql, params, new RowMapperResultReader(new RowMapper()))

一句话这么简单。

 

窥一豹而知全斑(当然有全部读完),所以我觉得与其说 Spring 是挑战 J2EE 应用的地位,不如说其是通过大量实践从而提出了更有效的方式,是一种最佳实践的体现.

因此,Spring 的过程也是论述“循序方法”论述的过程。


读完:《精通 Spring 》《 Spring In  Action 》《 J2EE without EJB 》和大量网络文章有感。

Thanks very much to visit blog,  welcome your feedback,  your feedback is the Driver && Power to me

posted on 2006-06-05 16:03 crazycy 阅读(2181) 评论(1)  编辑  收藏 所属分类: JavaEE技术读书笔记

评论

# re: Spring带来的“循序方法”  回复  更多评论   

讲解得很好
2007-02-05 16:09 | kidfang

只有注册用户登录后才能发表评论。


网站导航: