日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
簡(jiǎn)述SpringJDBC的學(xué)習(xí)

這里記錄我對(duì)Spring JDBC框架的學(xué)習(xí)。由于Spring JDBC和我之前做的工作有很多共同之處,學(xué)習(xí)經(jīng)典Framework的設(shè)計(jì),取長(zhǎng)補(bǔ)短,為我所用。在這里,先佩服一下Rod JohnSon,他對(duì)數(shù)據(jù)庫(kù),JDBC的理解非常深。看Spring jdbc框架的設(shè)計(jì)和源代碼,帶給了我很多以前沒(méi)有想到的東西。我們知道,Spring JDBC的主要目標(biāo)是為了簡(jiǎn)化JDBC的編程,方便我們構(gòu)建健壯的應(yīng)用程序。這里,它的一個(gè)基本設(shè)計(jì)理念,就是將JDBC編程中變化的和不變化的分開(kāi)。在JDBC中,什么是變化的?毫無(wú)疑問(wèn),SQL語(yǔ)句是變化的。那什么是不變化的?正確的使用JDBC的方式是不變化的。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供涇源企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站制作、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為涇源眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

先看一段代碼。(自己的代碼就不拿來(lái)做示范了,先看Rod書吧)

  1. public List getAvailableSeatlds(DataSource ds, int performanceld,    
  2.         int seatType) throws ApplicationException {         
  3.      String sql = "SELECT seat_id AS id FROM available_seats " +    
  4.                    "WHERE performance_id = ? AND price_band_id = ?";List seatlds = new LinkedList();    
  5.     Connection con = null;    
  6.       PreparedStatement ps = null;    
  7.       ResultSet rs = null;    
  8.      try {    
  9.         con = ds.getConnection();   //1。建立Connection  
  10.        ps = con.prepareStatement(sql);  //2。創(chuàng)建preparedStatement  
  11.         ps.setlnt(1, performanceld);  //3。設(shè)置ps的參數(shù)  
  12.        ps.setlnt(2, seatType);  
  13.        rs = ps.executeQuery();      //4.執(zhí)行查詢
  14.        while (rs.next()) {         //5.解析ResultSet
  15.         int seatld = rs.getlnt(1);    
  16.           seatlds.add(new Integer(seatld));    
  17.        }                                                                                                                        
  18.        rs.close();                //6.關(guān)閉資源,做好善后工作。rs,ps,connection  
  19.        ps.close(); 
  20.          }    
  21.       catch (SQLException ex) {    
  22.        throw new ApplicationException ("Couldn't run query [" + sql + "]", ex);    
  23.      }    
  24.      finally {    
  25.         try {    
  26.          if (con != null)    
  27.           con.close();  //如果沒(méi)有連接池的話,不要輕易關(guān)。connection屬于耗費(fèi)資源:)  
  28.        }    
  29.        catch (SQLException ex) {    
  30.          // Log and ignore    
  31.        }    
  32.      }    
  33.      return seatlds;    
  34.     }    

從上面看,什么是不變的。首先,咱們這個(gè)使用JDBC的方式是良好的,正確的,也是不變的,也就是workflow不變。其次,這里頭的很多操作是不變的,比如說(shuō):關(guān)閉資源,處理異常。
◆什么是變的?設(shè)置PreparedStament的參數(shù)是變化的,利用PreparedStatement做什么是變化的。
◆還有什么是變的?取得Connection可能是變化的,我們可以從ConnectionPool中取,也可以裸從Database取。
◆還有什么是變的?在主工作流之外,還可以對(duì)PreparedStament設(shè)置一些屬性。比如fetchSize等。
◆還有什么是變的?解析ResultSet是變的。但是可以抽象,都是從結(jié)果集中取得你想要的東西。
    
很好。經(jīng)過(guò)分析,我們會(huì)自然而然的想到Template設(shè)計(jì)模式。用模板方法來(lái)描述我們的工作流。對(duì)于固定的操作,我們會(huì)把它建模為一些幫助類,利用這些類來(lái)完成固定操作,這些操作在Template方法中被調(diào)用。

對(duì)于哪些可以變的方法。我們也發(fā)現(xiàn),其實(shí)它要實(shí)現(xiàn)的功能是一樣的。抽象起來(lái),我們可以用一些接口來(lái)描述這些功能。比如說(shuō)數(shù)據(jù)庫(kù)連接管理的功能。

設(shè)計(jì)取決于我們考慮問(wèn)題的深度,以及我們對(duì)過(guò)程劃分的粒度。

【編輯推薦】

  1. Spring MVC框架的高級(jí)配置(上)
  2. Spring MVC框架的高級(jí)配置(下)
  3. 用Factory Bean讓Spring配置動(dòng)起來(lái)
  4. Spring AOP使用心得
  5. Acegi安全框架在基于Spring框架應(yīng)用

當(dāng)前題目:簡(jiǎn)述SpringJDBC的學(xué)習(xí)
文章源于:http://www.5511xx.com/article/djghgoi.html