锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲高清国产拍精品熟女,亚洲午夜在线电影,亚洲国产成人久久笫一页http://www.tkk7.com/victor/category/572.html浜彈鍠у殻 瀹変簬騫抽潤zh-cnTue, 27 Feb 2007 17:30:23 GMTTue, 27 Feb 2007 17:30:23 GMT60楂樼駭 DAO 緙栫▼http://www.tkk7.com/Victor/articles/1674.htmlVictorVictorFri, 04 Mar 2005 01:21:00 GMThttp://www.tkk7.com/Victor/articles/1674.htmlhttp://www.tkk7.com/Victor/comments/1674.htmlhttp://www.tkk7.com/Victor/articles/1674.html#Feedback0http://www.tkk7.com/Victor/comments/commentRss/1674.htmlhttp://www.tkk7.com/Victor/services/trackbacks/1674.htmlJ2EE 寮鍙戜漢鍛樹嬌鐢ㄦ暟鎹闂璞?Data Access Object DAO)璁捐妯″紡錛屼互渚垮皢浣庣駭鍒殑鏁版嵁璁塊棶閫昏緫涓庨珮綰у埆鐨勪笟鍔¢昏緫鍒嗙銆傚疄鐜?DAO 妯″紡娑夊強姣旂紪鍐欐暟鎹闂唬鐮佹洿澶氱殑鍐呭銆傚湪鏈枃涓紝Java 寮鍙戜漢鍛?Sean C. Sullivan 璁ㄨ浜?DAO 緙栫▼涓笁涓父甯歌蹇界暐鐨勬柟闈細浜嬪姟鐣屽畾銆佸紓甯稿鐞嗗拰鏃ュ織璁板綍銆?/BLOCKQUOTE>

鍦ㄨ繃鍘?18 涓湀涓紝鎴戝弬鍔犱簡涓涓敱鏈夋墠鍗庣殑杞歡宸ョ▼甯堢粍鎴愮殑灝忕粍錛屾瀯寤哄畾鍒剁殑銆佸熀浜?Web 鐨勪緵搴旈摼綆$悊搴旂敤紼嬪簭銆傛垜浠殑搴旂敤紼嬪簭璁塊棶鑼冨洿騫挎硾鐨勬寔涔呮ф暟鎹紝鍖呮嫭閰嶉佺姸鎬併佷緵搴旈摼琛¢噺(metrics)銆佸簱瀛樸佽揣榪愬彂紲ㄣ侀」鐩鐞嗘暟鎹拰鐢ㄦ埛淇℃伅銆傛垜浠敤 JDBC API 榪炴帴鍒版垜浠叕鍙哥殑涓嶅悓鏁版嵁搴撳鉤鍙頒笂錛屽茍鍦ㄦ暣涓簲鐢ㄧ▼搴忎腑浣跨敤 DAO 璁捐妯″紡銆?/P>

鍥?1 鏄劇ず浜嗗簲鐢ㄧ▼搴忓拰鏁版嵁婧愪箣闂寸殑鍏崇郴錛?/P>

鍥?1. 搴旂敤紼嬪簭鍜屾暟鎹簮
搴旂敤紼嬪簭鍜屾暟鎹簮

鍦ㄦ暣涓簲鐢ㄧ▼搴忎腑浣跨敤鏁版嵁璁塊棶瀵硅薄(DAO)浣挎垜浠彲浠ュ皢搴曞眰鏁版嵁璁塊棶閫昏緫涓庝笟鍔¢昏緫鍒嗙寮鏉ャ傛垜浠瀯寤轟簡涓烘瘡涓涓暟鎹簮鎻愪緵 GRUD (鍒涘緩銆佽鍙栥佹洿鏂般佸垹闄?鎿嶄綔鐨?DAO 綾匯?/P>

鍦ㄦ湰鏂囦腑錛屾垜灝嗕負鎮ㄤ粙緇嶆瀯寤烘洿濂界殑 DAO 綾葷殑 DAO 瀹炵幇絳栫暐鍜屾妧鏈傛洿紜垏鍦拌錛屾垜灝嗚璁烘棩蹇椼佸紓甯稿鐞嗗拰浜嬪姟鐣屽畾銆傛偍灝嗗鍒板浣曞皢榪欎笁鑰呯粨鍚堝埌鑷繁鐨?DAO 綾諱腑銆傛湰鏂囧亣瀹氭偍鐔熸倝 JDBC API銆丼QL 鍜屽叧緋繪暟鎹簱緙栫▼銆?/P>

鎴戜滑灝嗕互瀵?DAO 璁捐妯″紡鍜屾暟鎹闂璞$殑姒傝堪寮濮嬨?/P>

DAO 鍩虹
DAO 妯″紡鏄爣鍑?J2EE 璁捐妯″紡涔嬩竴銆傚紑鍙戜漢鍛樼敤榪欑妯″紡灝嗗簳灞傛暟鎹闂搷浣滀笌楂樺眰涓氬姟閫昏緫鍒嗙寮銆備竴涓吀鍨嬬殑 DAO 瀹炵幇鏈変互涓嬬粍浠訛細

  • 涓涓?DAO 宸ュ巶綾?
  • 涓涓?DAO 鎺ュ彛
  • 涓涓疄鐜頒簡 DAO 鎺ュ彛鐨勫叿浣撶被
  • 鏁版嵁浼犺緭瀵硅薄(鏈夋椂縐頒負鍊煎璞?

鍏蜂綋鐨?DAO 綾誨寘鍚闂壒瀹氭暟鎹簮鐨勬暟鎹殑閫昏緫銆傚湪涓嬮潰涓鑺備腑鎮ㄥ皢瀛︿範璁捐鍜屽疄鐜版暟鎹闂璞$殑鎶鏈傛湁鍏?DAO 璁捐妯″紡鐨勬洿澶氬唴瀹硅鍙傞槄 鍙傝冭祫鏂?/A>銆?/P>

浜嬪姟鐣屽畾
鍏充簬 DAO 瑕佽浣忕殑閲嶈涓鐐規槸瀹冧滑鏄簨鍔℃у璞°傜敱 DAO 鎵鎵ц鐨勬瘡涓涓搷浣?-- 濡傚垱寤恒佹洿鏂版垨鑰呭垹闄ゆ暟鎹?-- 閮戒笌涓涓簨鍔$浉鍏寵仈銆傚洜姝わ紝浜嬪姟鐣屽畾鐨勬蹇靛氨鍙樺緱鐗瑰埆閲嶈浜嗐?/P>

浜嬪姟鐣屽畾鏄畾涔変簨鍔¤竟鐣岀殑鏂瑰紡銆侸2EE 瑙勮寖鎻忚堪浜嗕袱縐嶄簨鍔$晫瀹氱殑妯″瀷錛氱紪紼嬪紡(programmatic)鍜屽0鏄庡紡(declarative)銆傝〃 1 鍒嗘瀽浜嗚繖涓ょ妯″瀷錛?/P>

琛?1. 涓ょ浜嬪姟鐣屽畾鐨勬ā鍨?/B>
澹版槑寮忎簨鍔$晫瀹?/B> 緙栫▼寮忎簨鍔$晫瀹?/B>
紼嬪簭鍛樼敤 EJB 閮ㄧ講鎻忚堪絎﹀0鏄庝簨鍔″睘鎬с?/TD> 紼嬪簭鍛樿礋璐g紪鍐欎簨鍔¢昏緫銆?/TD>
榪愯鏃剁幆澧?EJB 瀹瑰櫒)鐢ㄨ繖浜涘睘鎬ц嚜鍔ㄧ鐞嗕簨鍔°?/TD> 搴旂敤紼嬪簭閫氳繃涓涓?API 鎺у埗浜嬪姟銆?/TD>

鎴戜滑灝嗕晶閲嶄簬緙栫▼寮忎簨鍔$晫瀹氥?/P>

璁捐鑰冭檻
濡傚墠鎵榪幫紝DAO 鏄簨鍔℃у璞°備竴涓吀鍨嬬殑 DAO 鎵ц鍍忓垱寤恒佹洿鏂板拰鍒犻櫎榪欐牱鐨勪簨鍔℃ф搷浣溿傚湪璁捐 DAO 鏃訛紝棣栧厛瑕侀棶鑷繁浠ヤ笅闂錛?/P>

  • 浜嬪姟瑕佸浣曞紑濮嬶紵
  • 浜嬪姟搴斿浣曠粨鏉燂紵
  • 鍝竴涓璞″皢璐熻矗寮濮嬩竴涓簨鍔★紵
  • 鍝竴涓璞″皢璐熻矗緇撴潫涓涓簨鍔★紵
  • DAO 鏄惁瑕佽礋璐d簨鍔$殑寮濮嬪拰緇撴潫錛?
  • 搴旂敤紼嬪簭鏄惁闇瑕侀氳繃澶氫釜 DAO 璁塊棶鏁版嵁錛?
  • 浜嬪姟娑夊強鍒頒竴涓?DAO 榪樻槸澶氫釜 DAO錛?
  • 涓涓?DAO 鏄惁璋冪敤鍙︿竴涓?DAO 鐨勬柟娉曪紵

浜嗚В涓婅堪闂鐨勭瓟妗堝皢鏈夊姪浜庢偍閫夋嫨鏈閫傚悎鐨?DAO 鐨勪簨鍔$晫瀹氱瓥鐣ャ傚湪 DAO 涓湁涓ょ涓昏鐨勭晫瀹氫簨鍔$殑絳栫暐銆備竴縐嶆柟寮忔槸璁?DAO 璐熻矗鐣屽畾浜嬪姟錛屽彟涓縐嶅皢浜嬪姟鐣屽畾浜ょ粰璋冪敤榪欎釜 DAO 鏂規硶鐨勫璞″鐞嗐傚鏋滈夋嫨浜嗗墠涓縐嶆柟寮忥紝閭d箞灝卞皢浜嬪姟浠g爜宓屽叆鍒?DAO 涓傚鏋滈夋嫨鍚庝竴縐嶆柟寮忥紝閭d箞浜嬪姟鐣屽畾浠g爜灝辨槸鍦?DAO 綾誨闈€傛垜浠皢浣跨敤綆鍗曠殑浠g爜紺轟緥甯姪鎮ㄦ洿濂界悊瑙f瘡涓縐嶆柟寮忔槸濡備綍宸ヤ綔鐨勩?/P>

娓呭崟 1 鏄劇ず浜嗕竴涓湁涓ょ鏁版嵁鎿嶄綔鐨?DAO錛氬垱寤哄拰鏇存柊錛?/P>娓呭崟 1. DAO 鏂規硶

       public void createWarehouseProfile(WHProfile profile);
       public void updateWarehouseStatus(WHIdentifier id, StatusInfo status);

娓呭崟 2 鏄劇ず浜嗕竴涓畝鍗曠殑浜嬪姟銆備簨鍔$晫瀹氬湪 DAO 綾誨闈€傛敞鎰忓湪榪欎釜渚嬪瓙涓皟鐢ㄨ呮槸濡備綍鍦ㄤ竴涓簨鍔′腑緇撳悎澶氫釜 DAO 鎿嶄綔鐨勩?/P>娓呭崟 2. 璋冪敤鑰呯鐞嗙殑浜嬪姟

      tx.begin();    // start the transaction
      dao.createWarehouseProfile(profile);
      dao.updateWarehouseStatus(id1, status1);
      dao.updateWarehouseStatus(id2, status2);
      tx.commit();   // end the transaction

榪欑浜嬪姟鐣屽畾絳栫暐瀵逛簬闇瑕佸湪涓涓簨鍔′腑璁塊棶澶氫釜 DAO 鐨勫簲鐢ㄧ▼搴忕壒鍒湁鐢ㄣ?/P>

鍙互鐢?JDBC API 鎴栬?Java 浜嬪姟 API(Java Transaction API JTA)瀹炵幇浜嬪姟鐣屽畾銆?JDBC 浜嬪姟鐣屽畾姣?JTA 浜嬪姟鐣屽畾瑕佺畝鍗曪紝浣嗘槸 JTA 鎻愪緵浜嗘洿澶氱殑鐏墊椿鎬с傚湪涓嬮潰涓鑺備腑鎴戝皢鏇存繁鍏ュ湴鍒嗘瀽浜嬪姟鐣屽畾鐨勬満鍒躲?/P>

鐢?JDBC 榪涜浜嬪姟鐣屽畾
JDBC 浜嬪姟鏄敤 Connection 瀵硅薄鎺у埗鐨勩侸DBC Connection 鎺ュ彛(java.sql.Connection)鎻愪緵浜嗕袱縐嶄簨鍔℃ā寮忥細鑷姩鎻愪氦鍜屾墜宸ユ彁浜ゃ?CODE>java.sql.Connection 鎻愪緵浜嗕互涓嬫帶鍒朵簨鍔$殑鏂規硶錛?/P>

  • public void setAutoCommit(boolean)
  • public boolean getAutoCommit()
  • public void commit()
  • public void rollback()

娓呭崟 3 鏄劇ず浜嗗浣曠敤 JDBC API 鐣屽畾涓涓簨鍔★細

娓呭崟 3. 鐢?JDBC API 榪涜浜嬪姟鐣屽畾

      import java.sql.*;
      import javax.sql.*;

      // ...
      DataSource ds = obtainDataSource();
      Connection conn = ds.getConnection();
      conn.setAutoCommit(false);
      // ...
      pstmt = conn.prepareStatement("UPDATE MOVIES ...");
      pstmt.setString(1, "The Great Escape");
      pstmt.executeUpdate();
      // ...
      conn.commit();
      // ...

浣跨敤 JDBC 浜嬪姟鐣屽畾鏃訛紝鎮ㄥ彲浠ュ皢澶氫釜 SQL 璇彞緇撳悎鍒頒竴涓簨鍔′腑銆侸DBC 浜嬪姟鐨勪竴涓己鐐規槸浜嬪姟鐨勮寖鍥村眬闄愪簬涓涓暟鎹簱榪炴帴銆備竴涓?JDBC 浜嬪姟涓嶈兘璺ㄨ秺澶氫釜鏁版嵁搴撱傚湪涓嬮潰錛屾垜浠皢鐪嬩竴涓嬪浣曠敤 JTA 榪涜浜嬪姟鐣屽畾銆傚洜涓?JTA 涓嶅儚 JDBC 閭f牱鏈夊悕錛屾墍浠ユ垜浠鍏堝仛涓涓畝浠嬨?/P>

JTA 綆浠?/SPAN>
Java 浜嬪姟 API(JTA) 鍙婂叾鍚岄棬鍏勫紵 Java 浜嬪姟鏈嶅姟(Java Transaction Service JTS)涓?J2EE 騫沖彴鎻愪緵浜嗗垎甯冨紡浜嬪姟鏈嶅姟銆備竴涓?I xmlns:dw="http://www.ibm.com/developerWorks/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">鍒嗗竷寮忕殑浜嬪姟娑夊強涓涓簨鍔$鐞嗗櫒鍜屼竴涓垨鑰呭涓祫婧愮鐞嗗櫒銆備竴涓?I xmlns:dw="http://www.ibm.com/developerWorks/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">璧勬簮綆$悊鍣?/I>鏄換浣曠被鍨嬬殑鎸佷箙鎬х殑鏁版嵁瀛樺偍銆備簨鍔$鐞嗗櫒璐熻矗鍗忚皟鎵鏈変簨鍔″弬涓庤呬箣闂寸殑閫氫俊銆備簨鍔$鐞嗗櫒涓庤祫婧愮鐞嗗櫒涔嬮棿鐨勫叧緋誨鍥?2 鎵紺猴細

鍥?2. 涓涓簨鍔$鐞嗗櫒鍜岃祫婧愮鐞嗗櫒
涓涓簨鍔$鐞嗗櫒鍜岃祫婧愮鐞嗗櫒

JTA 浜嬪姟姣?JDBC 浜嬪姟鍔熻兘鏇村己銆侸DBC 浜嬪姟灞闄愪負涓涓暟鎹簱榪炴帴錛岃?JTA 浜嬪姟鍙互鏈夊涓弬涓庤呫傛墍鏈変笅鍒?Java 騫沖彴緇勪歡閮藉彲浠ュ弬涓?JTA 浜嬪姟錛?/P>

  • JDBC 榪炴帴
  • JDO PersistenceManager 瀵硅薄
  • JMS 闃熷垪
  • JMS 涓婚
  • 浼佷笟 JavaBeans
  • 絎﹀悎 J2EE 榪炴帴浣撶郴緇撴瀯(J2EE Connector Architecture)瑙勮寖鐨勮祫婧愰傞厤鍣?

浣跨敤 JTA 鐨勪簨鍔$晫瀹?/SPAN>
瑕佺敤 JTA 榪涜浜嬪姟鐣屽畾錛屽簲鐢ㄧ▼搴忚璋冪敤 javax.transaction.UserTransaction 鎺ュ彛涓殑鏂規硶銆傛竻鍗?4 鏄劇ず浜嗗 UserTransaction 瀵硅薄鐨勫吀鍨?JNDI 鏌ヨ錛?/P>娓呭崟 4. 涓涓 UserTransaction 瀵硅薄鐨?/B> JDNI 鏌ヨ


      import javax.transaction.*;
      import javax.naming.*;
      // ...
      InitialContext ctx = new InitialContext();
      Object txObj = ctx.lookup("java:comp/UserTransaction");
      UserTransaction utx = (UserTransaction) txObj;

褰撳簲鐢ㄧ▼搴忔壘鍒頒簡 UserTransaction 瀵硅薄鍚庯紝灝卞彲浠ュ紑濮嬩簨鍔′簡錛屽娓呭崟 5 鎵紺猴細

娓呭崟 5. 鐢?JTA 寮濮嬩竴涓簨鍔?/B>


      utx.begin();
      // ...
      DataSource ds = obtainXADataSource();
      Connection conn = ds.getConnection();
      pstmt = conn.prepareStatement("UPDATE MOVIES ...");
      pstmt.setString(1, "Spinal Tap");
      pstmt.executeUpdate();
      // ...
      utx.commit();
      // ...

褰撳簲鐢ㄧ▼搴忚皟鐢?CODE> commit()鏃訛紝浜嬪姟綆$悊鍣ㄧ敤涓涓袱闃舵鐨勬彁浜ゅ崗璁粨鏉熶簨鍔°?/P>

鎺у埗浜嬪姟鐨?JTA 鏂規硶
javax.transaction.UserTransaction 鎺ュ彛鎻愪緵浜嗕互涓嬩簨鍔℃帶鍒舵柟娉曪細

  • public void begin()
  • public void commit()
  • public void rollback()
  • public int getStatus()
  • public void setRollbackOnly()
  • public void setTransactionTimeout(int)

搴旂敤紼嬪簭璋冪敤 begin() 寮濮嬩簨鍔°傚簲鐢ㄧ▼搴忚皟鐢?commit() 鎴栬?CODE> rollback() 緇撴潫浜嬪姟銆傚弬闃?A xmlns:dw="http://www.ibm.com/developerWorks/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">鍙傝冭祫鏂?/A>浠ヤ簡瑙f洿澶氬叧浜庣敤 JTA 榪涜浜嬪姟綆$悊鐨勫唴瀹廣?/P>

浣跨敤 JTA 鍜?JDBC
寮鍙戜漢鍛橀氬父鍦?DAO 綾諱腑鐢?JDBC 榪涜搴曞眰鏁版嵁鎿嶄綔銆傚鏋滆鍒掔敤 JTA 鐣屽畾浜嬪姟錛岄偅涔堝氨闇瑕佹湁涓涓疄鐜?javax.sql.XADataSource銆?CODE>javax.sql.XAConnection 鍜?javax.sql.XAResource 鎺ュ彛鐨?JDBC 椹卞姩紼嬪簭銆備竴涓疄鐜頒簡榪欎簺鎺ュ彛鐨勯┍鍔ㄧ▼搴忓皢鍙互鍙備笌 JTA 浜嬪姟銆備竴涓?CODE> XADataSource 瀵硅薄灝辨槸涓涓?XAConnection 瀵硅薄鐨勫伐鍘傘?CODE>XAConnections 鏄弬涓?JTA 浜嬪姟鐨?JDBC 榪炴帴銆?/P>

鎮ㄥ皢闇瑕佺敤搴旂敤鏈嶅姟鍣ㄧ殑綆$悊宸ュ叿璁劇疆 XADataSource銆備粠搴旂敤鏈嶅姟鍣ㄥ拰 JDBC 椹卞姩紼嬪簭鐨勬枃妗d腑鍙互浜嗚В鍒扮浉鍏崇殑鎸囧銆?/P>

J2EE 搴旂敤紼嬪簭鐢?JNDI 鏌ヨ鏁版嵁婧愩備竴鏃﹀簲鐢ㄧ▼搴忔壘鍒頒簡鏁版嵁婧愬璞★紝瀹冨氨璋冪敤 javax.sql.DataSource.getConnection() 浠ヨ幏寰楀埌鏁版嵁搴撶殑榪炴帴銆?/P>

XA 榪炴帴涓庨潪 XA 榪炴帴涓嶅悓銆備竴瀹氳璁頒綇 XA 榪炴帴鍙備笌浜?JTA 浜嬪姟銆傝繖鎰忓懗鐫 XA 榪炴帴涓嶆敮鎸?JDBC 鐨勮嚜鍔ㄦ彁浜ゅ姛鑳姐傚悓鏃訛紝搴旂敤紼嬪簭涓瀹氫笉瑕佸 XA 榪炴帴璋冪敤 java.sql.Connection.commit() 鎴栬?CODE> java.sql.Connection.rollback()銆傜浉鍙嶏紝搴旂敤紼嬪簭搴旇浣跨敤 UserTransaction.begin()銆?/CODE>UserTransaction.commit() 鍜?CODE> serTransaction.rollback()銆?/P>

閫夋嫨鏈濂界殑鏂瑰紡
鎴戜滑璁ㄨ浜嗗浣曠敤 JDBC 鍜?JTA 鐣屽畾浜嬪姟銆傛瘡涓縐嶆柟寮忛兘鏈夊叾浼樼偣錛屾偍闇瑕佸喅瀹氬摢涓縐嶆渶閫傚悎浜庢偍鐨勫簲鐢ㄧ▼搴忋?/P>

鍦ㄦ渶榪戠殑璁稿欏圭洰涓紝鎴戜滑灝忕粍鏄敤 JDBC API 榪涗簨鍔$晫瀹氭潵鏋勫緩 DAO 綾葷殑銆傝繖浜?DAO 綾誨彲浠ユ葷粨濡備笅錛?/P>

  • 浜嬪姟鐣屽畾浠g爜宓屽叆鍦?DAO 綾諱腑銆?
  • DAO 綾諱嬌鐢?JDBC API 榪涜浜嬪姟鐣屽畾銆?
  • 璋冪敤鑰呬笉鑳界晫瀹氫簨鍔°?
  • 浜嬪姟鑼冨洿灞闄愪簬鍗曚釜 JDBC 榪炴帴銆?

JDBC 浜嬪姟騫朵笉鎬繪槸閫傚悎澶嶆潅鐨勪紒涓氬簲鐢ㄧ▼搴忋傚鏋滄偍鐨勪簨鍔¤璺ㄨ秺澶氫釜 DAO 鎴栬呭涓暟鎹簱錛岄偅涔堜笅鍒楀疄鐜扮瓥鐣ヤ篃璁告洿鍚堥傦細

  • 浜嬪姟鐢?JTA 鐣屽畾銆?
  • 浜嬪姟鐣屽畾浠g爜浠?DAO 涓垎紱誨嚭鏉ャ?
  • 璋冪敤鑰呰礋璐g晫瀹氫簨鍔°?
  • DAO 鍔犲叆涓涓叏灞浜嬪姟銆?

JDBC 鏂瑰紡鐢變簬鍏剁畝鍗曟ц屽叿鏈夊惛寮曞姏錛孞TA銆鏂瑰紡鎻愪緵浜嗘洿澶х殑鐏墊椿鎬с傛偍鎵閫夋嫨鐨勫疄鐜板皢鍙栧喅浜庡簲鐢ㄧ▼搴忕殑鐗瑰畾闇姹傘?/P>

鏃ュ織璁板綍鍜?DAO
涓涓壇濂藉疄鐜扮殑 DAO 綾誨皢浣跨敤鏃ュ織璁板綍鏉ユ崟鎹夋湁鍏沖叾榪愯鏃惰涓虹殑緇嗚妭銆傛偍鍙互閫夋嫨璁板綍寮傚父銆侀厤緗俊鎭佽繛鎺ョ姸鎬併丣DBC 椹卞姩紼嬪簭鍏冩暟鎹佹垨鑰呮煡璇㈠弬鏁般傛棩蹇楀浜庡紑鍙戠殑鎵鏈夐樁孌甸兘寰堟湁鐢ㄣ傛垜緇忓父鍦ㄥ紑鍙戞椂銆佹祴璇曟椂鍜岀敓浜т腑鍒嗘瀽搴旂敤紼嬪簭鏃ュ織銆?/P>

鍦ㄦ湰鑺傦紝鎴戝皢灞曠ず涓涓樉紺哄浣曞皢 Jakarta Commons Logging 鍔犲叆鍒?DAO 涓殑浠g爜紺轟緥銆傚湪榪欎箣鍓嶏紝璁╂垜浠洖欏句竴涓嬩竴浜涘熀鏈煡璇嗐?/P>

閫夋嫨鏃ュ織搴?/SPAN>
璁稿寮鍙戜漢鍛樹嬌鐢ㄤ竴縐嶅師濮嬫牸寮忚繘琛屾棩蹇楄褰曪細System.out.println 鍜?CODE> System.err.println銆?CODE>Println 璇彞閫熷害蹇笖浣跨敤鏂逛究錛屼絾鏄畠浠病鏈夋彁渚涘叏鍔熻兘鐨勬棩蹇楄褰曠郴緇熸墍鍏鋒湁鐨勫姛鑳姐傝〃 2 鍒楀嚭浜?Java 騫沖彴鐨勬棩蹇楀簱錛?/P>

琛?2. Java 騫沖彴鐨勬棩蹇楀簱
鏃ュ織搴?/B> 寮鏀炬簮浠g爜錛?/B> URL
java.util.logging 涓嶆槸 http://java.sun.com/j2se/
Jakarta Log4j 鏄?/TD> http://jakarta.apache.org/log4j/
Jakarta Commons Logging 鏄?/TD> http://jakarta.apache.org/commons/logging.html

java.util.logging 鏄?J2SE 1.4 騫沖彴涓婄殑鏍囧噯 API銆備笉榪囷紝澶у鏁板紑鍙戜漢鍛樺悓鎰?Jakarta Log4j 鎻愪緵浜嗘洿澶氱殑鍔熻兘鍜屾洿澶х殑鐏墊椿鎬с侺og4j 浼樹簬 java.util.logging 鐨勪竴鐐規槸瀹冨悓鏃舵敮鎸?J2SE 1.3 鍜?J2SE 1.4 騫沖彴銆?/P>

Jakarta Commons Logging 鍙互涓?CODE> java.util.logging 鎴栬?Jakarta Log4j 涓鍚屼嬌鐢ㄣ侰ommons Logging 鏄竴涓棩蹇楁娊璞″眰錛屽畠闅旂浜嗗簲鐢ㄧ▼搴忎笌搴曞眰鏃ュ織瀹炵幇銆備嬌鐢?Commons Logging錛屾偍鍙互閫氳繃鏀瑰彉閰嶇疆鏂囦歡鏇存崲搴曞眰鏃ュ織瀹炵幇銆侰ommons Logging 鍦?Jakarta Struts 1.1 鍜?Jakarta HttpClient 2.0 涓嬌鐢ㄣ?/P>

涓涓棩蹇楄褰曠ず渚?/SPAN>
娓呭崟 7 鏄劇ず浜嗗浣曞湪 DAO 綾諱腑浣跨敤 Jakarta Commons Logging錛?/P>娓呭崟 7. DAO 綾諱腑鐨?Jakarta Commons Logging

import org.apache.commons.logging.*;

class DocumentDAOImpl implements DocumentDAO
{
      static private final Log log = LogFactory.getLog(DocumentDAOImpl.class);

      public void deleteDocument(String id)
      {
          // ...
          log.debug("deleting document: " + id);
          // ...
          try
          {
              // ... data operations ...
          }
          catch (SomeException ex)
          {
              log.error("Unable to delete document", ex);
              // ... handle the exception ...
	}
      }
}

鏃ュ織璁板綍鏄墍鏈変換鍔″叧閿瀷搴旂敤紼嬪簭鐨勯噸瑕侀儴鍒嗐傚鏋滃湪 DAO 涓亣鍒版晠闅滐紝閭d箞鏃ュ織閫氬父鍙互鎻愪緵鍒ゆ柇鍑洪敊浣嶇疆鐨勬渶濂戒俊鎭傚皢鏃ュ織鍔犲叆鍒?DAO 鍙互淇濊瘉鎮ㄦ湁鏈轟細榪涜璋冭瘯鍜屾晠闅滄帓闄ゃ?/P>

DAO 涓殑寮傚父澶勭悊
鎴戜滑璁ㄨ榪囦簡浜嬪姟鐣屽畾鍜屾棩蹇楋紝鐜板湪瀵逛簬濡備綍鍦ㄦ暟鎹闂璞′笂搴旂敤瀹冧滑鏈変簡鏇存繁鍏ョ殑鐞嗚В銆傛垜浠殑絎笁涓拰鏈鍚庝竴涓璁鴻棰樻槸寮傚父澶勭悊銆傞伒浠庡嚑涓畝鍗曠殑寮傚父澶勭悊鎸囧鍙互浣挎偍鐨?DAO 鏇村鏄撲嬌鐢ㄣ佹洿鍋ュ.鍙婃洿鏄撲簬緇存姢銆?/P>

鍦ㄥ疄鐜?DAO 妯″紡鏃訛紝鑰冭檻浠ヤ笅闂錛?/P>

  • DAO 鐨勫叕鍏辨帴鍙d腑鐨勬柟娉曟槸鍚︽姏鍑烘鏌ヨ繃鐨勫紓甯革紵
  • 濡傛灉鏄殑璇濓紝鎶涘嚭浣曠媯鏌ヨ繃鐨勫紓甯革紵
  • 鍦?DAO 瀹炵幇綾諱腑濡備綍澶勭悊寮傚父錛?

鍦ㄤ嬌鐢?DAO 妯″紡鐨勮繃紼嬩腑錛屾垜浠殑灝忕粍寮鍙戜簡涓浜涘鐞嗗紓甯哥殑鍘熷垯銆傞伒浠庤繖浜涘師鍒欏彲浠ユ瀬澶у湴鏀硅繘鎮ㄧ殑 DAO錛?/P>

  • DAO 鏂規硶搴旇鎶涘嚭鏈夋剰涔夌殑寮傚父銆?BR>
  • DAO 鏂規硶涓嶅簲璇ユ姏鍑?java.lang.Exception銆?CODE>java.lang.Exception 澶竴鑸寲浜嗐傚畠涓嶄紶閫掑叧浜庡簳灞傞棶棰樼殑浠諱綍淇℃伅銆?BR>
  • DAO 鏂規硶涓嶅簲璇ユ姏鍑?CODE> java.sql.SQLException銆係QLException 鏄竴涓綆綰у埆鐨?JDBC 寮傚父銆備竴涓?DAO 搴旇鍔涗簤灝佽 JDBC 鑰屼笉鏄皢 JDBC 鍏紑緇欏簲鐢ㄧ▼搴忕殑鍏朵綑閮ㄥ垎銆?BR>
  • 鍙湁鍦ㄥ彲浠ュ悎鐞嗗湴棰勬湡璋冪敤鑰呭彲浠ュ鐞嗗紓甯告椂錛孌AO 鎺ュ彛涓殑鏂規硶鎵嶅簲璇ユ姏鍑烘鏌ヨ繃鐨勫紓甯搞傚鏋滆皟鐢ㄨ呬笉鑳戒互鏈夋剰涔夌殑鏂瑰紡澶勭悊榪欎釜寮傚父錛岄偅涔堣冭檻鎶涘嚭涓涓湭媯鏌ョ殑(榪愯鏃?寮傚父銆?BR>
  • 濡傛灉鏁版嵁璁塊棶浠g爜鎹曡幏浜嗕竴涓紓甯革紝涓嶈蹇界暐瀹冦傚拷鐣ユ崟鑾風殑寮傚父鐨?DAO 鏄緢闅捐繘琛屾晠闅滆瘖鏂殑銆?BR>
  • 浣跨敤閾炬帴鐨勫紓甯稿皢浣庣駭鍒殑寮傚父杞寲涓洪珮綰у埆鐨勫紓甯搞?BR>
  • 鑰冭檻瀹氫箟鏍囧噯 DAO 寮傚父綾匯係pring Framework (鍙傞槄鍙傝冭祫鏂?/A>)鎻愪緵浜嗗緢濂界殑涓濂楅瀹氫箟鐨?DAO 寮傚父綾匯?

鏈夊叧寮傚父鍜屽紓甯稿鐞嗘妧鏈殑鏇村淇℃伅鍙傞槄鍙傝冭祫鏂?/A>銆?/P>

瀹炵幇瀹炰緥錛?MovieDAO
MovieDAO 鏄竴涓睍紺烘湰鏂囦腑璁ㄨ鐨勬墍鏈夋妧鏈殑 DAO錛氫簨鍔$晫瀹氥佹棩蹇楀拰寮傚父澶勭悊銆傛偍鍙互鍦?A xmlns:dw="http://www.ibm.com/developerWorks/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">鍙傝冭祫鏂?/A>涓鑺備腑鎵懼埌 MovieDAO 婧愪唬鐮併備唬鐮佸垎涓轟笁涓寘錛?/P>

  • daoexamples.exception
  • daoexamples.movie
  • daoexamples.moviedemo

DAO 妯″紡鐨勮繖涓疄鐜板寘鍚笅闈㈠垪鍑虹殑綾誨拰鎺ュ彛錛?/P>

  • daoexamples.movie.MovieDAOFactory
  • daoexamples.movie.MovieDAO
  • daoexamples.movie.MovieDAOImpl
  • daoexamples.movie.MovieDAOImplJTA
  • daoexamples.movie.Movie
  • daoexamples.movie.MovieImpl
  • daoexamples.movie.MovieNotFoundException
  • daoexamples.movie.MovieUtil

MovieDAO 鎺ュ彛瀹氫箟浜?DAO 鐨勬暟鎹搷浣溿傝繖涓帴鍙f湁浜斾釜鏂規硶錛屽涓嬫墍紺猴細

  • public Movie findMovieById(String id)
  • public java.util.Collection findMoviesByYear(String year)
  • public void deleteMovie(String id)
  • public Movie createMovie(String rating, String year, String, title)
  • public void updateMovie(String id, String rating, String year, String title)

daoexamples.movie 鍖呭寘鍚?MovieDAO 鎺ュ彛鐨勪袱涓疄鐜般傛瘡涓涓疄鐜頒嬌鐢ㄤ竴縐嶄笉鍚岀殑鏂瑰紡榪涜浜嬪姟鐣屽畾錛屽琛?3 鎵紺猴細

琛?3. MovieDAO 瀹炵幇
MovieDAOImpl MovieDAOImplJTA
瀹炵幇 MovieDAO 鎺ュ彛? 鏄?/TD> 鏄?/TD>
閫氳繃 JNDI 鑾峰緱 DataSource錛?/TD> 鏄?/TD> 鏄?/TD>
浠?DataSource 鑾峰緱 java.sql.Connection 瀵硅薄錛?/TD> 鏄?/TD> 鏄?/TD>
DAO 鍦ㄥ唴閮ㄧ晫瀹氫簨鍔★紵 鏄?/TD> 鍚?/TD>
浣跨敤 JDBC 浜嬪姟錛?/TD> 鏄?/TD> 鍚?/TD>
浣跨敤涓涓?XA DataSource錛?/TD> 鍚?/TD> 鏄?/TD>
鍙備笌 JTA 浜嬪姟錛?/TD> 鍚?/TD> 鏄?/TD>

MovieDAO 婕旂ず搴旂敤紼嬪簭
榪欎釜婕旂ず搴旂敤紼嬪簭鏄竴涓悕涓?daoexamples.moviedemo.DemoServlet 鐨?servlet 綾匯?CODE>DemoServlet 浣跨敤榪欎袱涓?Movie DAO 鏌ヨ鍜屾洿鏂拌〃涓殑鐢靛獎鏁版嵁銆?/P>

榪欎釜 servlet 灞曠ず浜嗗浣曞皢鏀寔 JTA 鐨?MovieDAO 鍜?Java 娑堟伅鏈嶅姟(Java Message Service)緇撳悎鍒頒竴涓簨鍔′腑錛屽娓呭崟 8 鎵紺恒?/P>娓呭崟 8. 灝?MovieDAO 鍜?JMS 浠g爜緇撳悎鍒頒竴涓簨鍔′腑

	UserTransaction utx = MovieUtil.getUserTransaction();
	utx.begin();
	batman = dao.createMovie("R",
			"2008",
			"Batman Reloaded");
	publisher = new MessagePublisher();
	publisher.publishTextMessage("I'll be back");
	dao.updateMovie(topgun.getId(),
			"PG-13",
			topgun.getReleaseYear(),
			topgun.getTitle());
	dao.deleteMovie(legallyblonde.getId());
	utx.commit();

瑕佽繍琛岃繖涓紨紺哄簲鐢ㄧ▼搴忥紝闇瑕佸湪搴旂敤鏈嶅姟鍣ㄤ笂閰嶇疆涓涓?XA 鏁版嵁婧愬拰涓涓潪 XA 鏁版嵁婧愩傜劧鍚庯紝閮ㄧ講 daoexamples.ear 鏂囦歡銆傝繖涓簲鐢ㄧ▼搴忓彲浠ュ湪浠諱綍鍏煎 J2EE 1.3 鐨勫簲鐢ㄦ湇鍔″櫒涓婅繍琛屻傚弬闃?A xmlns:dw="http://www.ibm.com/developerWorks/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">鍙傝冭祫鏂?/A>浠ヨ幏寰?EAR 鏂囦歡鍜屾簮浠g爜銆?/P>

緇撴潫璇?/SPAN>
姝e鏈枃鎵灞曠ず鐨勶紝瀹炵幇 DAO 妯″紡闇瑕佸仛姣旂紪鍐欎綆綰у埆鐨勬暟鎹闂唬鐮佹洿澶氱殑宸ヤ綔銆傜幇鍦紝閫氳繃閫夋嫨涓涓傚悎鎮ㄧ殑搴旂敤紼嬪簭鐨勪簨鍔$晫瀹氱瓥鐣ャ侀氳繃鍦?DAO 綾諱腑鍔犲叆鏃ュ織璁板綍錛屼互鍙婇氳繃閬典粠鍑犻」綆鍗曠殑寮傚父澶勭悊鍘熷垯錛屾偍鍙互鏋勫緩鏇村ソ鐨?DAO銆?/P>

Victor 2005-03-04 09:21 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 久久精品女人天堂AV免费观看| 7m凹凸精品分类大全免费| 免费看国产成年无码AV片| 亚洲视频欧洲视频| 免费人成视频在线观看网站 | 88xx成人永久免费观看| 亚洲国产成人高清在线观看| 美女无遮挡拍拍拍免费视频| 亚洲日韩精品无码一区二区三区| 国产精品玖玖美女张开腿让男人桶爽免费看| 亚洲?V乱码久久精品蜜桃| 一区二区三区在线免费观看视频| 亚洲无码精品浪潮| 成人影片一区免费观看| 亚洲男人的天堂在线| 拨牐拨牐x8免费| 日韩精品免费一线在线观看| 日本亚洲国产一区二区三区| 国产成人精品无码免费看| 亚洲熟妇色自偷自拍另类| 成人看的午夜免费毛片| 黄色毛片免费网站| 亚洲精品无码午夜福利中文字幕 | 成人特黄a级毛片免费视频| 亚洲欧美日韩中文二区| 国产一级做a爱免费视频| 你是我的城池营垒免费看| 99人中文字幕亚洲区| 日韩在线天堂免费观看| 春意影院午夜爽爽爽免费| 亚洲av无码成人黄网站在线观看| 啦啦啦完整版免费视频在线观看| 亚洲乱码中文字幕在线| 国产亚洲av人片在线观看| 无码国产精品一区二区免费虚拟VR| 亚洲国产无线乱码在线观看| 中文亚洲AV片在线观看不卡| 免费成人激情视频| 免费人成视频在线观看免费| 久久久久久亚洲精品成人| 四虎在线播放免费永久视频|