<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    cuiyi's blog(崔毅 crazycy)

    記錄點滴 鑒往事之得失 以資于發(fā)展
    數(shù)據(jù)加載中……

    Spring帶來的“循序方法”

    非常感謝你的閱讀,如果你覺得好或者對你有幫助,請積極給一個留言反饋以示鼓勵。 

             
    選擇一種架構(gòu)、一種技術(shù)的依據(jù)是什么?
    Rod Johnson 認(rèn)為,應(yīng)該是基于實踐的依據(jù)、來自歷史項目或親自試驗的經(jīng)驗,而不是任何形式的偶像崇拜或者門戶之見。

    如果說 Spring 發(fā)起了對 J2EE 常規(guī)應(yīng)用的挑戰(zhàn),那其立足的基礎(chǔ)就是實踐,把大量實踐中的經(jīng)驗累積成一種最佳實踐,把這種最佳實踐融合到 J2EE 應(yīng)用的方方面面。

    事實勝于雄辯,用具體的示例進(jìn)行闡述:

    JDBC 操作中,我們用到的無非是增、刪、改、查 CRUD4 個功能,每個功能都覆蓋了 1 建立連接 2 構(gòu)造 PrepareStatement 對象 3 進(jìn)行操作 如果有異?;貪L 4 關(guān)閉連接。

    以查詢?yōu)槔?/span>

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

    ……

    我們實際開發(fā)中常常使用 rs2VO(Resultset rs) 私有函數(shù)來進(jìn)行轉(zhuǎn)化;

    這個過程, 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()) 來取代;


    外加其提供的避免大量重復(fù)代碼的回調(diào)函數(shù),因此整個過程最后只剩下:

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

    一句話這么簡單。

     

    窺一豹而知全斑(當(dāng)然有全部讀完),所以我覺得與其說 Spring 是挑戰(zhàn) J2EE 應(yīng)用的地位,不如說其是通過大量實踐從而提出了更有效的方式,是一種最佳實踐的體現(xiàn).

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


    讀完:《精通 Spring 》《 Spring In  Action 》《 J2EE without EJB 》和大量網(wǎng)絡(luò)文章有感。

    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 閱讀(2303) 評論(1)  編輯  收藏 所屬分類: JavaEE技術(shù)讀書筆記

    評論

    # re: Spring帶來的“循序方法”  回復(fù)  更多評論   

    講解得很好
    2007-02-05 16:09 | kidfang
    主站蜘蛛池模板: 国产网站免费观看| 日韩一品在线播放视频一品免费| 羞羞网站免费观看| 成人免费视频一区二区| 99久久免费国产精品热| 亚洲视频免费观看| 国产精品无码一二区免费 | 午夜网站免费版在线观看| 亚洲第一区在线观看| 久久亚洲精品视频| 亚洲卡一卡2卡三卡4麻豆| 成人福利在线观看免费视频| 亚洲一区视频在线播放| 亚洲国产中文在线二区三区免 | 国产一卡2卡3卡4卡无卡免费视频 国产一卡二卡3卡四卡免费 | 亚洲色偷偷色噜噜狠狠99| 一级特黄特色的免费大片视频| 精品女同一区二区三区免费站| 国产自偷亚洲精品页65页| 国产精品亚洲午夜一区二区三区| 99麻豆久久久国产精品免费 | 亚洲精品成人片在线播放| 亚洲AV无码一区二区大桥未久| 久草视频在线免费看| 亚洲国产午夜中文字幕精品黄网站 | 污视频网站免费观看| 成人免费男女视频网站慢动作| 亚洲一级二级三级不卡| 一级做a爰片久久毛片免费陪| 亚洲中文字幕在线乱码| 亚洲免费福利视频| 看一级毛片免费观看视频| 免费看少妇作爱视频| jlzzjlzz亚洲jzjzjz| 最近最新高清免费中文字幕| 九月丁香婷婷亚洲综合色| 波多野结衣免费在线| 亚洲熟妇色自偷自拍另类| 免费无码又爽又刺激高潮视频| 亚洲日韩精品一区二区三区| 丁香花在线观看免费观看图片|