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

          評論

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

          講解得很好
          2007-02-05 16:09 | kidfang
          主站蜘蛛池模板: 鹰潭市| 祁阳县| 定安县| 马尔康县| 宕昌县| 马山县| 大关县| 九龙县| 碌曲县| 十堰市| 涟源市| 彭阳县| 奇台县| 磐石市| 兰溪市| 雷州市| 微山县| 阿城市| 辰溪县| 景洪市| 九寨沟县| 织金县| 施甸县| 江津市| 浦县| 新乡市| 新巴尔虎左旗| 雷州市| 贺兰县| 天门市| 宝坻区| 甘孜县| 霍城县| 阜新市| 香格里拉县| 扎兰屯市| 子长县| 寿阳县| 长岛县| 余干县| 江永县|