锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鍦ㄨ繃鍘?18 涓湀涓紝鎴戝弬鍔犱簡涓涓敱鏈夋墠鍗庣殑杞歡宸ョ▼甯堢粍鎴愮殑灝忕粍錛屾瀯寤哄畾鍒剁殑銆佸熀浜?Web 鐨勪緵搴旈摼綆$悊搴旂敤紼嬪簭銆傛垜浠殑搴旂敤紼嬪簭璁塊棶鑼冨洿騫挎硾鐨勬寔涔呮ф暟鎹紝鍖呮嫭閰嶉佺姸鎬併佷緵搴旈摼琛¢噺(metrics)銆佸簱瀛樸佽揣榪愬彂紲ㄣ侀」鐩鐞嗘暟鎹拰鐢ㄦ埛淇℃伅銆傛垜浠敤 JDBC API 榪炴帴鍒版垜浠叕鍙哥殑涓嶅悓鏁版嵁搴撳鉤鍙頒笂錛屽茍鍦ㄦ暣涓簲鐢ㄧ▼搴忎腑浣跨敤 DAO 璁捐妯″紡銆?/P>
鍥?1 鏄劇ず浜嗗簲鐢ㄧ▼搴忓拰鏁版嵁婧愪箣闂寸殑鍏崇郴錛?/P>
鍦ㄦ暣涓簲鐢ㄧ▼搴忎腑浣跨敤鏁版嵁璁塊棶瀵硅薄(DAO)浣挎垜浠彲浠ュ皢搴曞眰鏁版嵁璁塊棶閫昏緫涓庝笟鍔¢昏緫鍒嗙寮鏉ャ傛垜浠瀯寤轟簡涓烘瘡涓涓暟鎹簮鎻愪緵 GRUD (鍒涘緩銆佽鍙栥佹洿鏂般佸垹闄?鎿嶄綔鐨?DAO 綾匯?/P>
鍦ㄦ湰鏂囦腑錛屾垜灝嗕負鎮ㄤ粙緇嶆瀯寤烘洿濂界殑 DAO 綾葷殑 DAO 瀹炵幇絳栫暐鍜屾妧鏈傛洿紜垏鍦拌錛屾垜灝嗚璁烘棩蹇椼佸紓甯稿鐞嗗拰浜嬪姟鐣屽畾銆傛偍灝嗗鍒板浣曞皢榪欎笁鑰呯粨鍚堝埌鑷繁鐨?DAO 綾諱腑銆傛湰鏂囧亣瀹氭偍鐔熸倝 JDBC API銆丼QL 鍜屽叧緋繪暟鎹簱緙栫▼銆?/P>
鎴戜滑灝嗕互瀵?DAO 璁捐妯″紡鍜屾暟鎹闂璞$殑姒傝堪寮濮嬨?/P>
DAO 鍩虹 鍏蜂綋鐨?DAO 綾誨寘鍚闂壒瀹氭暟鎹簮鐨勬暟鎹殑閫昏緫銆傚湪涓嬮潰涓鑺備腑鎮ㄥ皢瀛︿範璁捐鍜屽疄鐜版暟鎹闂璞$殑鎶鏈傛湁鍏?DAO 璁捐妯″紡鐨勬洿澶氬唴瀹硅鍙傞槄 鍙傝冭祫鏂?/A>銆?/P>
浜嬪姟鐣屽畾 浜嬪姟鐣屽畾鏄畾涔変簨鍔¤竟鐣岀殑鏂瑰紡銆侸2EE 瑙勮寖鎻忚堪浜嗕袱縐嶄簨鍔$晫瀹氱殑妯″瀷錛氱紪紼嬪紡(programmatic)鍜屽0鏄庡紡(declarative)銆傝〃 1 鍒嗘瀽浜嗚繖涓ょ妯″瀷錛?/P>
琛?1. 涓ょ浜嬪姟鐣屽畾鐨勬ā鍨?/B>
鎴戜滑灝嗕晶閲嶄簬緙栫▼寮忎簨鍔$晫瀹氥?/P>
璁捐鑰冭檻 浜嗚В涓婅堪闂鐨勭瓟妗堝皢鏈夊姪浜庢偍閫夋嫨鏈閫傚悎鐨?DAO 鐨勪簨鍔$晫瀹氱瓥鐣ャ傚湪 DAO 涓湁涓ょ涓昏鐨勭晫瀹氫簨鍔$殑絳栫暐銆備竴縐嶆柟寮忔槸璁?DAO 璐熻矗鐣屽畾浜嬪姟錛屽彟涓縐嶅皢浜嬪姟鐣屽畾浜ょ粰璋冪敤榪欎釜 DAO 鏂規硶鐨勫璞″鐞嗐傚鏋滈夋嫨浜嗗墠涓縐嶆柟寮忥紝閭d箞灝卞皢浜嬪姟浠g爜宓屽叆鍒?DAO 涓傚鏋滈夋嫨鍚庝竴縐嶆柟寮忥紝閭d箞浜嬪姟鐣屽畾浠g爜灝辨槸鍦?DAO 綾誨闈€傛垜浠皢浣跨敤綆鍗曠殑浠g爜紺轟緥甯姪鎮ㄦ洿濂界悊瑙f瘡涓縐嶆柟寮忔槸濡備綍宸ヤ綔鐨勩?/P>
娓呭崟 1 鏄劇ず浜嗕竴涓湁涓ょ鏁版嵁鎿嶄綔鐨?DAO錛氬垱寤哄拰鏇存柊錛?/P>娓呭崟 1. DAO 鏂規硶 娓呭崟 2 鏄劇ず浜嗕竴涓畝鍗曠殑浜嬪姟銆備簨鍔$晫瀹氬湪 DAO 綾誨闈€傛敞鎰忓湪榪欎釜渚嬪瓙涓皟鐢ㄨ呮槸濡備綍鍦ㄤ竴涓簨鍔′腑緇撳悎澶氫釜 DAO 鎿嶄綔鐨勩?/P>娓呭崟 2. 璋冪敤鑰呯鐞嗙殑浜嬪姟 榪欑浜嬪姟鐣屽畾絳栫暐瀵逛簬闇瑕佸湪涓涓簨鍔′腑璁塊棶澶氫釜 DAO 鐨勫簲鐢ㄧ▼搴忕壒鍒湁鐢ㄣ?/P>
鍙互鐢?JDBC API 鎴栬?Java 浜嬪姟 API(Java Transaction API JTA)瀹炵幇浜嬪姟鐣屽畾銆?JDBC 浜嬪姟鐣屽畾姣?JTA 浜嬪姟鐣屽畾瑕佺畝鍗曪紝浣嗘槸 JTA 鎻愪緵浜嗘洿澶氱殑鐏墊椿鎬с傚湪涓嬮潰涓鑺備腑鎴戝皢鏇存繁鍏ュ湴鍒嗘瀽浜嬪姟鐣屽畾鐨勬満鍒躲?/P>
鐢?JDBC 榪涜浜嬪姟鐣屽畾 娓呭崟 3 鏄劇ず浜嗗浣曠敤 JDBC API 鐣屽畾涓涓簨鍔★細 浣跨敤 JDBC 浜嬪姟鐣屽畾鏃訛紝鎮ㄥ彲浠ュ皢澶氫釜 SQL 璇彞緇撳悎鍒頒竴涓簨鍔′腑銆侸DBC 浜嬪姟鐨勪竴涓己鐐規槸浜嬪姟鐨勮寖鍥村眬闄愪簬涓涓暟鎹簱榪炴帴銆備竴涓?JDBC 浜嬪姟涓嶈兘璺ㄨ秺澶氫釜鏁版嵁搴撱傚湪涓嬮潰錛屾垜浠皢鐪嬩竴涓嬪浣曠敤 JTA 榪涜浜嬪姟鐣屽畾銆傚洜涓?JTA 涓嶅儚 JDBC 閭f牱鏈夊悕錛屾墍浠ユ垜浠鍏堝仛涓涓畝浠嬨?/P>
JTA 綆浠?/SPAN> JTA 浜嬪姟姣?JDBC 浜嬪姟鍔熻兘鏇村己銆侸DBC 浜嬪姟灞闄愪負涓涓暟鎹簱榪炴帴錛岃?JTA 浜嬪姟鍙互鏈夊涓弬涓庤呫傛墍鏈変笅鍒?Java 騫沖彴緇勪歡閮藉彲浠ュ弬涓?JTA 浜嬪姟錛?/P>
浣跨敤 JTA 鐨勪簨鍔$晫瀹?/SPAN> 褰撳簲鐢ㄧ▼搴忔壘鍒頒簡 褰撳簲鐢ㄧ▼搴忚皟鐢?CODE> commit()鏃訛紝浜嬪姟綆$悊鍣ㄧ敤涓涓袱闃舵鐨勬彁浜ゅ崗璁粨鏉熶簨鍔°?/P>
鎺у埗浜嬪姟鐨?JTA 鏂規硶 搴旂敤紼嬪簭璋冪敤 浣跨敤 JTA 鍜?JDBC 鎮ㄥ皢闇瑕佺敤搴旂敤鏈嶅姟鍣ㄧ殑綆$悊宸ュ叿璁劇疆 J2EE 搴旂敤紼嬪簭鐢?JNDI 鏌ヨ鏁版嵁婧愩備竴鏃﹀簲鐢ㄧ▼搴忔壘鍒頒簡鏁版嵁婧愬璞★紝瀹冨氨璋冪敤 XA 榪炴帴涓庨潪 XA 榪炴帴涓嶅悓銆備竴瀹氳璁頒綇 XA 榪炴帴鍙備笌浜?JTA 浜嬪姟銆傝繖鎰忓懗鐫 XA 榪炴帴涓嶆敮鎸?JDBC 鐨勮嚜鍔ㄦ彁浜ゅ姛鑳姐傚悓鏃訛紝搴旂敤紼嬪簭涓瀹氫笉瑕佸 XA 榪炴帴璋冪敤 閫夋嫨鏈濂界殑鏂瑰紡 鍦ㄦ渶榪戠殑璁稿欏圭洰涓紝鎴戜滑灝忕粍鏄敤 JDBC API 榪涗簨鍔$晫瀹氭潵鏋勫緩 DAO 綾葷殑銆傝繖浜?DAO 綾誨彲浠ユ葷粨濡備笅錛?/P>
JDBC 浜嬪姟騫朵笉鎬繪槸閫傚悎澶嶆潅鐨勪紒涓氬簲鐢ㄧ▼搴忋傚鏋滄偍鐨勪簨鍔¤璺ㄨ秺澶氫釜 DAO 鎴栬呭涓暟鎹簱錛岄偅涔堜笅鍒楀疄鐜扮瓥鐣ヤ篃璁告洿鍚堥傦細 JDBC 鏂瑰紡鐢變簬鍏剁畝鍗曟ц屽叿鏈夊惛寮曞姏錛孞TA銆鏂瑰紡鎻愪緵浜嗘洿澶х殑鐏墊椿鎬с傛偍鎵閫夋嫨鐨勫疄鐜板皢鍙栧喅浜庡簲鐢ㄧ▼搴忕殑鐗瑰畾闇姹傘?/P>
鏃ュ織璁板綍鍜?DAO 鍦ㄦ湰鑺傦紝鎴戝皢灞曠ず涓涓樉紺哄浣曞皢 Jakarta Commons Logging 鍔犲叆鍒?DAO 涓殑浠g爜紺轟緥銆傚湪榪欎箣鍓嶏紝璁╂垜浠洖欏句竴涓嬩竴浜涘熀鏈煡璇嗐?/P>
閫夋嫨鏃ュ織搴?/SPAN> 琛?2. Java 騫沖彴鐨勬棩蹇楀簱
DAO 妯″紡鏄爣鍑?J2EE 璁捐妯″紡涔嬩竴銆傚紑鍙戜漢鍛樼敤榪欑妯″紡灝嗗簳灞傛暟鎹闂搷浣滀笌楂樺眰涓氬姟閫昏緫鍒嗙寮銆備竴涓吀鍨嬬殑 DAO 瀹炵幇鏈変互涓嬬粍浠訛細
鍏充簬 DAO 瑕佽浣忕殑閲嶈涓鐐規槸瀹冧滑鏄簨鍔℃у璞°傜敱 DAO 鎵鎵ц鐨勬瘡涓涓搷浣?-- 濡傚垱寤恒佹洿鏂版垨鑰呭垹闄ゆ暟鎹?-- 閮戒笌涓涓簨鍔$浉鍏寵仈銆傚洜姝わ紝浜嬪姟鐣屽畾鐨勬蹇靛氨鍙樺緱鐗瑰埆閲嶈浜嗐?/P>
澹版槑寮忎簨鍔$晫瀹?/B>
緙栫▼寮忎簨鍔$晫瀹?/B>
紼嬪簭鍛樼敤 EJB 閮ㄧ講鎻忚堪絎﹀0鏄庝簨鍔″睘鎬с?/TD>
紼嬪簭鍛樿礋璐g紪鍐欎簨鍔¢昏緫銆?/TD>
榪愯鏃剁幆澧?EJB 瀹瑰櫒)鐢ㄨ繖浜涘睘鎬ц嚜鍔ㄧ鐞嗕簨鍔°?/TD>
搴旂敤紼嬪簭閫氳繃涓涓?API 鎺у埗浜嬪姟銆?/TD>
濡傚墠鎵榪幫紝DAO 鏄簨鍔℃у璞°備竴涓吀鍨嬬殑 DAO 鎵ц鍍忓垱寤恒佹洿鏂板拰鍒犻櫎榪欐牱鐨勪簨鍔℃ф搷浣溿傚湪璁捐 DAO 鏃訛紝棣栧厛瑕侀棶鑷繁浠ヤ笅闂錛?/P>
public void createWarehouseProfile(WHProfile profile);
public void updateWarehouseStatus(WHIdentifier id, StatusInfo status);
tx.begin(); // start the transaction
dao.createWarehouseProfile(profile);
dao.updateWarehouseStatus(id1, status1);
dao.updateWarehouseStatus(id2, status2);
tx.commit(); // end the transaction
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()
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();
// ...
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 鎵紺猴細
PersistenceManager
瀵硅薄
瑕佺敤 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 鎵紺猴細
utx.begin();
// ...
DataSource ds = obtainXADataSource();
Connection conn = ds.getConnection();
pstmt = conn.prepareStatement("UPDATE MOVIES ...");
pstmt.setString(1, "Spinal Tap");
pstmt.executeUpdate();
// ...
utx.commit();
// ...
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>
寮鍙戜漢鍛橀氬父鍦?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>
javax.sql.DataSource.getConnection()
浠ヨ幏寰楀埌鏁版嵁搴撶殑榪炴帴銆?/P>
java.sql.Connection.commit()
鎴栬?CODE> java.sql.Connection.rollback()銆傜浉鍙嶏紝搴旂敤紼嬪簭搴旇浣跨敤 UserTransaction.begin()銆?/CODE>
銆?/P>
UserTransaction.commit()
鍜?CODE> serTransaction.rollback()
鎴戜滑璁ㄨ浜嗗浣曠敤 JDBC 鍜?JTA 鐣屽畾浜嬪姟銆傛瘡涓縐嶆柟寮忛兘鏈夊叾浼樼偣錛屾偍闇瑕佸喅瀹氬摢涓縐嶆渶閫傚悎浜庢偍鐨勫簲鐢ㄧ▼搴忋?/P>
涓涓壇濂藉疄鐜扮殑 DAO 綾誨皢浣跨敤鏃ュ織璁板綍鏉ユ崟鎹夋湁鍏沖叾榪愯鏃惰涓虹殑緇嗚妭銆傛偍鍙互閫夋嫨璁板綍寮傚父銆侀厤緗俊鎭佽繛鎺ョ姸鎬併丣DBC 椹卞姩紼嬪簭鍏冩暟鎹佹垨鑰呮煡璇㈠弬鏁般傛棩蹇楀浜庡紑鍙戠殑鎵鏈夐樁孌甸兘寰堟湁鐢ㄣ傛垜緇忓父鍦ㄥ紑鍙戞椂銆佹祴璇曟椂鍜岀敓浜т腑鍒嗘瀽搴旂敤紼嬪簭鏃ュ織銆?/P>
璁稿寮鍙戜漢鍛樹嬌鐢ㄤ竴縐嶅師濮嬫牸寮忚繘琛屾棩蹇楄褰曪細System.out.println
鍜?CODE> System.err.println銆?CODE>Println 璇彞閫熷害蹇笖浣跨敤鏂逛究錛屼絾鏄畠浠病鏈夋彁渚涘叏鍔熻兘鐨勬棩蹇楄褰曠郴緇熸墍鍏鋒湁鐨勫姛鑳姐傝〃 2 鍒楀嚭浜?Java 騫沖彴鐨勬棩蹇楀簱錛?/P>
鏃ュ織搴?/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
|
鏃ュ織璁板綍鏄墍鏈変換鍔″叧閿瀷搴旂敤紼嬪簭鐨勯噸瑕侀儴鍒嗐傚鏋滃湪 DAO 涓亣鍒版晠闅滐紝閭d箞鏃ュ織閫氬父鍙互鎻愪緵鍒ゆ柇鍑洪敊浣嶇疆鐨勬渶濂戒俊鎭傚皢鏃ュ織鍔犲叆鍒?DAO 鍙互淇濊瘉鎮ㄦ湁鏈轟細榪涜璋冭瘯鍜屾晠闅滄帓闄ゃ?/P>
DAO 涓殑寮傚父澶勭悊
鎴戜滑璁ㄨ榪囦簡浜嬪姟鐣屽畾鍜屾棩蹇楋紝鐜板湪瀵逛簬濡備綍鍦ㄦ暟鎹闂璞′笂搴旂敤瀹冧滑鏈変簡鏇存繁鍏ョ殑鐞嗚В銆傛垜浠殑絎笁涓拰鏈鍚庝竴涓璁鴻棰樻槸寮傚父澶勭悊銆傞伒浠庡嚑涓畝鍗曠殑寮傚父澶勭悊鎸囧鍙互浣挎偍鐨?DAO 鏇村鏄撲嬌鐢ㄣ佹洿鍋ュ.鍙婃洿鏄撲簬緇存姢銆?/P>
鍦ㄥ疄鐜?DAO 妯″紡鏃訛紝鑰冭檻浠ヤ笅闂錛?/P>
鍦ㄤ嬌鐢?DAO 妯″紡鐨勮繃紼嬩腑錛屾垜浠殑灝忕粍寮鍙戜簡涓浜涘鐞嗗紓甯哥殑鍘熷垯銆傞伒浠庤繖浜涘師鍒欏彲浠ユ瀬澶у湴鏀硅繘鎮ㄧ殑 DAO錛?/P>
java.lang.Exception
銆?CODE>java.lang.Exception 澶竴鑸寲浜嗐傚畠涓嶄紶閫掑叧浜庡簳灞傞棶棰樼殑浠諱綍淇℃伅銆?BR>鏈夊叧寮傚父鍜屽紓甯稿鐞嗘妧鏈殑鏇村淇℃伅鍙傞槄鍙傝冭祫鏂?/A>銆?/P>
瀹炵幇瀹炰緥錛?MovieDAO DAO 妯″紡鐨勮繖涓疄鐜板寘鍚笅闈㈠垪鍑虹殑綾誨拰鎺ュ彛錛?/P>
琛?3. 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
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 鎵紺猴細
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爜緇撳悎鍒頒竴涓簨鍔′腑
|
瑕佽繍琛岃繖涓紨紺哄簲鐢ㄧ▼搴忥紝闇瑕佸湪搴旂敤鏈嶅姟鍣ㄤ笂閰嶇疆涓涓?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>