cascade灞炴€у茍涓嶆槸澶氬澶氬叧緋諱竴瀹氳鐢ㄧ殑錛屾湁浜嗗畠鍙槸璁╂垜浠湪鎻掑叆鎴栧垹闄ゅ鍍忔椂鏇存柟渚夸竴浜涳紝鍙鍦╟ascade鐨勬簮澶翠笂鎻掑叆鎴栨槸鍒犻櫎錛屾墍鏈塩ascade鐨勫叧緋誨氨浼氳鑷繁鍔ㄧ殑鎻掑叆鎴栨槸鍒犻櫎銆備究鏄負浜嗚兘姝g‘鐨刢ascade錛寀nsaved-value鏄釜寰堥噸瑕佺殑灞炴€с€侶ibernate閫氳繃榪欎釜灞炴€ф潵鍒ゆ柇涓€涓璞″簲璇ave榪樻槸update錛屽鏋滆繖涓璞$殑id鏄痷nsaved-value鐨勮瘽錛岄偅璇存槑榪欎釜瀵硅薄涓嶆槸persistence object瑕乻ave錛坕nsert)錛涘鏋渋d鏄潪unsaved-value鐨勮瘽錛岄偅璇存槑榪欎釜瀵硅薄鏄痯ersistence object錛堟暟鎹簱涓凡瀛樺湪錛夛紝鍙update灝辮浜嗐€俿aveOrUpdate鏂規硶鐢ㄧ殑涔熸槸榪欎釜鏈哄埗銆?/p>
錛掋€佸埌搴曞湪鍝敤inverse="ture"?
inverse灞炴€ч粯璁ゆ槸false鐨勶紝灝辨槸璇村叧緋葷殑涓ょ閮芥潵緇存姢鍏崇郴銆傝繖涓剰鎬濆氨鏄錛屽鏈変竴涓猄tudent, Teacher鍜孴eacherStudent琛紝Student鍜孴eacher鏄瀵瑰瀵瑰鍏崇郴錛岃繖涓叧緋葷敱TeacherStudent榪欎釜琛ㄦ潵琛ㄧ幇銆傞偅涔堜粈涔堟椂鍊欐彃鍏ユ垨鍒犻櫎TeacherStudent琛ㄤ腑鐨勮褰曟潵緇存姢鍏崇郴鍛紵鍦ㄧ敤hibernate鏃訛紝鎴戜滑涓嶄細鏄劇ず鐨勫TeacherStudent琛ㄥ仛鎿嶄綔銆傚TeacherStudent鐨勬搷浣滄槸hibernate甯垜浠仛鐨勩€俬ibernate灝辨槸鐪媓bm鏂囦歡涓寚瀹氱殑鏄?璋?緇存姢鍏崇郴錛岄偅涓湪鎻掑叆鎴栧垹闄?璋?鏃訛紝灝變細澶勫彂瀵瑰叧緋昏〃鐨勬搷浣溿€傚墠鎻愭槸"璋?榪欎釜瀵硅薄宸茬粡鐭ラ亾榪欎釜鍏崇郴浜嗭紝灝辨槸璇村叧緋誨彟涓€澶寸殑瀵硅薄宸茬粡set鎴栨槸add鍒?璋?榪欎釜瀵硅薄閲屾潵浜嗐€傚墠闈㈣榪噄nverse榛樿鏄痜alse錛屽氨鏄叧緋葷殑涓ょ閮界淮鎶ゅ叧緋伙紝瀵瑰叾涓換涓€涓搷浣滈兘浼氬鍙戝琛ㄧ郴琛ㄧ殑鎿嶄綔銆傚綋鍦ㄥ叧緋葷殑涓€澶達紝濡係tudent涓殑bag鎴杝et涓敤浜唅nverse錛?true"鏃訛紝閭e氨浠h〃鍏崇郴鏄敱鍙︿竴鍏崇淮鎶ょ殑錛圱eacher錛夈€傚氨鏄褰撹繖鎻掑叆Student鏃訛紝涓嶄細鎿嶄綔TeacherStudent琛紝鍗充嬌Student宸茬粡鐭ラ亾浜嗗叧緋匯€傚彧鏈夊綋Teacher鎻掑叆鎴栧垹闄ゆ椂鎵嶄細澶勫彂瀵瑰叧緋昏〃鐨勬搷浣溿€傛墍浠ワ紝褰撳叧緋葷殑涓ゅご閮界敤inverse="true"鏄笉瀵圭殑錛屽氨浼氬鑷翠換浣曟搷浣滈兘涓嶅鍙戝鍏崇郴琛ㄧ殑鎿嶄綔銆傚綋涓ょ閮芥槸inverse="false"鎴栨槸default鍊兼槸錛屽湪浠g爜瀵瑰叧緋繪樉紺虹殑緇存姢涔熸槸涓嶅鐨勶紝浼氬鑷村湪鍏崇郴琛ㄤ腑鎻掑叆涓ゆ鍏崇郴銆?/p>
鍦ㄤ竴瀵瑰鍏崇郴涓璱nverse灝辨洿鏈夋剰涔変簡銆傚湪澶氬澶氫腑錛屽湪鍝inverse="true"鏁堟灉宸笉澶氾紙鍦ㄦ晥鐜囦笂錛夈€備絾鏄湪涓€瀵瑰涓紝濡傛灉瑕佷竴鏂圭淮鎶ゅ叧緋伙紝灝變細浣垮湪鎻掑叆鎴栨槸鍒犻櫎"涓€"鏂規椂鍘籾pdate"澶?鏂圭殑姣忎竴涓笌榪欎釜"涓€"鐨勫璞℃湁鍏崇郴鐨勫璞°€傝€屽鏋滆"澶?鏂歸潰緇存姢鍏崇郴鏃跺氨涓嶄細鏈塽pdate鎿嶄綔錛屽洜涓哄叧緋誨氨鏄湪澶氭柟鐨勫璞′腑鐨勶紝鐩存寚鎻掑叆鎴栨槸鍒犻櫎澶氭柟瀵硅薄灝辮浜嗐€傚綋鐒惰繖鏃朵篃瑕侀亶鍘?澶?鏂圭殑姣忎竴涓璞℃樉紺虹殑鎿嶄綔淇叧緋葷殑鍙樺寲浣撶幇鍒癉B涓€備笉綆℃€庢牱璇達紝榪樻槸璁?澶?鏂圭淮鎶ゅ叧緋繪洿鐩磋涓€浜涖€?/p>
錛撱€乧ascade鍜宨nverse鏈変粈涔堝尯鍒紵
鍙互榪欐牱鐞嗚В錛宑ascade瀹氫箟鐨勬槸鍏崇郴涓ょ瀵硅薄鍒板璞$殑綰ц仈鍏崇郴錛涜€宨nverse瀹氫箟鐨勬槸鍏崇郴鍜屽璞$殑綰ц仈鍏崇郴銆?/p>
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=741468
璇﹁錛歨ttp://www.bczs.net/xml/2005/12/21/4473293.xml
http://welcomejianghome.spaces.msn.com/blog/cns!3196CAE67CDF2316!149.entry
all : 鎵€鏈夋儏鍐典笅鍧囪繘琛屽叧鑱旀搷浣溿€?
none錛氭墍鏈夋儏鍐典笅鍧囦笉榪涜鍏寵仈鎿嶄綔銆傝繖鏄粯璁ゅ€箋€?
save-update:鍦ㄦ墽琛宻ave/update/saveOrUpdate鏃惰繘琛屽叧鑱旀搷浣溿€?
delete錛氬湪鎵цdelete鏃惰繘琛屽叧鑱旀搷浣溿€?
all鐨勬剰鎬濇槸save-update + delete
all-delete-orphan 鐨勬剰鎬濇槸褰撳璞″浘涓駭鐢熷鍎胯妭鐐規椂,鍦ㄦ暟鎹簱涓垹闄よ鑺傜偣
all姣旇緝濂界悊瑙?涓句釜渚嬪瓙璇翠竴涓媋ll-delete-orphan:
Category涓嶪tem鏄竴瀵瑰鐨勫叧緋?涔熷氨鏄Category綾諱腑鏈変釜Set綾誨瀷鐨勫彉閲廼tems.
涓句釜渚嬪瓙,鐜癷tems涓瓨涓や釜Item, item1,item2,濡傛灉瀹氫箟鍏崇郴涓篴ll-delete-orphan
褰搃tems涓垹闄ゆ帀涓€涓猧tem(姣斿鐢╮emove()鏂規硶鍒犻櫎item1),閭d箞琚垹闄ょ殑Item綾誨疄渚?
灝嗗彉鎴愬鍎胯妭鐐?褰撴墽琛宑ategory.update(),鎴杝ession.flush()鏃?
hibernate鍚屾緙撳瓨鍜屾暟鎹簱,浼氭妸鏁版嵁搴撲腑item1瀵瑰簲鐨勮褰曞垹鎺?
List list = getHibernateTemplate().findByCriteria(queryCriteria);
鍒樿壋闇?錛?/SPAN>
鏁版嵁鎸佷箙灞傜殑璁捐鐩爣鏄負鏁翠釜欏圭洰鎻愪緵涓€涓珮灞傘€佺粺涓€銆佸畨鍏ㄥ拰騫跺彂鐨勬暟鎹寔涔呮満鍒躲€傚畬鎴愬鍚勭鏁版嵁榪涜鎸佷箙鍖栫殑緙栫▼宸ヤ綔錛屽茍涓虹郴緇熶笟鍔¢€昏緫灞傛彁渚涙湇鍔°€傛暟鎹寔涔呭眰鎻愪緵浜嗘暟鎹闂柟娉曪紝鑳藉浣垮叾瀹冪▼搴忓憳閬垮厤鎵嬪伐緙栧啓紼嬪簭璁塊棶鏁版嵁鎸佷箙灞?Persistene layer)錛屼嬌鍏朵笓娉ㄤ簬涓氬姟閫昏緫鐨勫紑鍙戯紝騫朵笖鑳藉鍦ㄤ笉鍚岄」鐩腑閲嶇敤鏄犲皠妗嗘灦錛屽ぇ澶х畝鍖栦簡鏁版嵁澧炪€佸垹銆佹敼銆佹煡絳夊姛鑳界殑寮€鍙戣繃紼嬶紝鍚屾椂鍙堜笉涓уけ澶氬眰緇撴瀯鐨勫ぉ鐒朵紭鍔匡紝緇ф壙寤剁畫J2EE鐗規湁鐨勫彲浼哥緝鎬у拰鍙墿灞曟€с€?O:P>
1 鏁版嵁鎸佷箙灞傚強ORM鏄犲皠妗嗘灦
絎旇€呬粠浜嬬殑欏圭洰涓殑鏁版嵁鎸佷箙灞傦紝鏄熀浜嶫2EE浣撶郴緇撴瀯錛屽茍閲囩敤浜咹ibernate浣滀負鎸佷箙鏄犲皠妗嗘灦銆?O:P>
Hibernate鏄竴縐嶆柊鐨凮RM鏄犲皠宸ュ叿錛屾槸JDBC鐨勮交閲忕駭鐨勫璞″皝瑁呫€侶ibernate鍙互鐢ㄥ湪JDBC鍙互浣跨敤鐨勪換浣曞満鍚堬紝渚嬪Java搴旂敤紼嬪簭鐨勬暟鎹簱璁塊棶浠g爜錛孌AO鎺ュ彛鐨勫疄鐜扮被錛岀敋鑷沖彲浠ユ槸BMP閲岄潰鐨勮闂暟鎹簱鐨勪唬鐮併€侶ibernate涓嶄粎鎻愪緵浜嗕粠Java綾誨埌鏁版嵁琛ㄤ箣闂寸殑鏄犲皠錛屼篃鎻愪緵浜嗘暟鎹煡璇㈠拰鎭㈠鏈哄埗銆傜浉瀵逛簬浣跨敤JDBC鍜孲QL鏉ユ墜宸ユ搷浣滄暟鎹簱錛屼嬌鐢℉ibernate錛屽彲浠ュぇ澶у噺灝戞搷浣滄暟鎹簱鐨勫伐浣滈噺銆?
Hibernate鏄竴涓拰JDBC瀵嗗垏鍏寵仈鐨勩€佺嫭绔嬬殑瀵硅薄鎸佷箙灞傛鏋訛紝鍙互鎼厤鍚勭App Server銆乄eb Server銆丒JB Container鍏卞悓浣跨敤錛孒ibernate鐨勫吋瀹規€т粎鍚孞DBC椹卞姩銆佸簳灞傛暟鎹簱浜у搧闂存湁涓€瀹氱殑鍏崇郴錛屼絾鏄拰浣跨敤瀹冪殑Java紼嬪簭銆丄pp Server娌℃湁浠諱綍鍏崇郴錛屼篃涓嶅瓨鍦ㄥ吋瀹規€ч棶棰樸€傝€屼笖浜嬪疄琛ㄦ槑Hibernate鍙互鍜屽縐峎eb鏈嶅姟鍣ㄦ垨鑰呭簲鐢ㄦ湇鍔″櫒鑹ソ闆嗘垚錛屽浠婂凡緇忔敮鎸佸嚑涔庢墍鏈夌殑嫻佽鐨勬暟鎹簱鏈嶅姟鍣紙杈?6縐嶏級銆?O:P>
鍦ㄨ緝涓哄父鐢ㄧ殑鏁版嵁鎸佷箙鏂規涓紝Hibernate鏃犵枒鏄渶浼樼鐨勶紝涓嬮潰鏄鍚勭鎸佷箙鏂規鐨勬瘮杈冦€?O:P>
簍 嫻佽鐨勬暟鎹寔涔呭眰鏋舵瀯錛?O:P>
Business Layer <-> Session Bean <-> Entity Bean <-> DB
簍 涓轟簡瑙e喅鎬ц兘闅滅鐨勬浛浠f灦鏋勶細
Business Layer <-> DAO <-> JDBC <-> DB
簍 浣跨敤Hibernate鏉ユ彁楂樹笂闈㈡灦鏋勭殑寮€鍙戞晥鐜囩殑鏋舵瀯錛?O:P>
Business Layer <-> DAO <-> Hibernate <-> DB
鎴戜滑灝變笂闈?涓灦鏋勬潵浣滃涓嬪垎鏋愩€?O:P>
(1)鍐呭瓨娑堣€楋細閲囩敤JDBC鐨勬灦鏋勬棤鐤戞槸鏈€鐪佸唴瀛樼殑錛孒ibernate鐨勬灦鏋勬涔嬶紝EB鐨勬灦鏋勬渶宸€?/SPAN>
(2)榪愯鏁堢巼錛氬鏋淛DBC鐨勪唬鐮佸啓鐨勯潪甯鎬紭鍖栵紝閭d箞JDBC鏋舵瀯榪愯鏁堢巼鏈€楂橈紝浣嗘槸瀹為檯欏圭洰涓紝榪欎竴鐐瑰嚑涔庡仛涓嶅埌錛岃繖闇€瑕佺▼搴忓憳闈炲父綺鵑€欽DBC錛岃繍鐢˙atch璇彞錛岃皟鏁碢reapredStatement鐨凚atch Size鍜孎etch Size絳夊弬鏁幫紝浠ュ強鍦ㄥ繀瑕佺殑鎯呭喌涓嬮噰鐢ㄧ粨鏋滈泦cache絳夌瓑銆傝€屼竴鑸儏鍐典笅紼嬪簭鍛樻槸鍋氫笉鍒拌繖涓€鐐圭殑銆傚洜姝ibernate鏋舵瀯琛ㄧ幇鍑烘渶蹇殑榪愯鏁堢巼銆侲B鐨勬灦鏋勬晥鐜囦細宸殑寰堣繙銆?/SPAN>
(3)寮€鍙戞晥鐜囷細鍦ㄦ湁Eclipse銆丣Builder絳夊紑鍙戝伐鍏風殑鏀寔涓嬶紝瀵逛簬綆€鍗曠殑欏圭洰錛孍B鏋舵瀯寮€鍙戞晥鐜囨渶楂橈紝JDBC嬈′箣錛孒ibernate鏈€宸€備絾鏄湪澶х殑欏圭洰錛岀壒鍒槸鎸佷箙灞傚叧緋繪槧灝勫緢澶嶆潅鐨勬儏鍐典笅錛孒ibernate鏁堢巼楂樼殑鎯婁漢錛孞DBC嬈′箣錛岃€孍B鏋舵瀯寰堝彲鑳戒細澶辮觸銆?/SPAN>
2 鏁版嵁鎸佷箙灞傝璁?/FONT>
澶嶆潅鎬ф槸搴旂敤寮€鍙戣繃紼嬩腑鏈€浠や漢澶寸柤鐨勪竴涓棶棰樸€傛瘡褰撳湪涓€涓簲鐢ㄤ腑澧炲姞涓€涓姛鑳芥椂錛屽畠鐨勫鏉傛€ч€氬父鍛堝嚑浣曠駭鐨勫闀褲€傝繖縐嶅鏉傛€у線寰€瀵艱嚧紼嬪簭鐨勫紑鍙戞棤娉曞啀緇х畫涓嬪幓銆傝繖涔熸槸鐜板湪涓轟粈涔堣澶氬簲鐢ㄥ彧鏈?SPAN lang=EN-US>Beta鐗堟湰鑰屾病鏈夋寮忕増鐨勫師鍥犮€?SPAN style="mso-spacerun: yes">
涓撳灝嗗簲鐢ㄥ紑鍙戣繃紼嬩駭鐢熺殑澶嶆潅鎬у垎涓轟袱綾伙紝鍗抽潪鏈川鐨勶紙accidental錛夊拰鏈川鐨勶紙essential錛夈€傛湰璐ㄧ殑澶嶆潅鎬ф槸瀵逛簬瑙e喅鐩爣闂鎵€蹇呯劧浜х敓鐨勫鏉傛€э紝闈炴湰璐ㄧ殑澶嶆潅鎬ф槸鐢變簬閫夋嫨浜嗕笉閫傚綋鐨勫紑鍙戝伐鍏峰拰璁捐宸ュ叿鑰屼駭鐢熺殑澶嶆潅鎬с€傚浜庝竴涓姛鑳界‘瀹氱殑紼嬪簭鏉ヨ錛屾湰璐ㄧ殑澶嶆潅鎬ф槸紜畾鐨勶紝鑰岄潪鏈川鐨勫鏉傛€у垯鏄病鏈夐檺鍒剁殑銆傚洜姝わ紝涓€涓簲鐢ㄧ殑寮€鍙戣鎯寵緝欏哄埄鍦板彇寰楁垚鍔燂紝灝遍渶瑕佸敖鍙兘鍦板噺灝戦潪鏈川鐨勫鏉傛€с€?O:P>
璁捐妯″紡浣夸漢浠彲浠ユ洿鍔犵畝鍗曟柟渚垮湴澶嶇敤鎴愬姛鐨勮璁″拰浣撶郴緇撴瀯銆傚皢宸茶瘉瀹炵殑鎶€鏈〃榪版垚璁捐妯″紡錛屼篃浼氫嬌鏂扮郴緇熷紑鍙戣€呮洿鍔犲鏄撶悊瑙e叾璁捐鎬濊礬銆?SPAN lang=EN-US>
琛¢噺涓€涓郴緇熶紭縐€涓庡惁鐨勫叧閿洜绱狅紝闄や簡鑳藉婊¤凍鐢ㄦ埛闇€姹傚榪樻湁濡備笅鏂歸潰錛氶鍏堟槸鐏墊椿鎬с€傜伒媧繪€ф剰鎸囪繖縐嶇粨鏋勬垨妯″紡涓嶄緷璧栦簬浠諱綍瀹為檯搴旂敤錛屽簲璇ヤ笌鎿嶄綔緋葷粺銆佸簲鐢ㄧ▼搴忔棤鍏熾€傛彁渚涚嫭绔嬬殑緇撴瀯錛屽彲浠ユ彁渚涙渶澶х殑閲嶇敤銆傚叾嬈℃槸鍙墿灞曟€с€傞殢鐫€涓氬姟鐨勬墿灞曪紝鏂扮殑涓氬姟涓嶆柇澧炲姞錛屼笟鍔¢€昏緫鑷劧澧炲姞錛岀郴緇熷繀鐒朵細榪涜淇敼鎴栨坊鍔犵浉搴斿姛鑳芥ā鍧椼€傚啀嬈℃槸鍙厤緗€с€傛渶鍚庢槸瀹夊叏鎬с€?SPAN lang=EN-US>
鏁版嵁鎸佷箙灞傜殑璁捐閲囩撼浜嗗縐嶈璁℃ā寮忥紝鏈€澶ч檺搴︾殑闄嶄綆浜嗙郴緇熷唴閮ㄥ悇妯″潡銆佸瓙緋葷粺闂寸殑鑰﹀悎鎬э紝浣垮緱緋葷粺鐩稿鏄撲簬鎵╁睍錛屽茍涓旇兘澶熷湪榪涜鏀瑰彉鏃訛紝淇濊瘉鎸佷箙灞傜殑涓氬姟閫昏緫灞傜浉瀵圭ǔ瀹氾紝鍩烘湰涓嶉渶瑕佸洜鎸佷箙灞傜殑璋冩暣鏀瑰彉鑰岃繘琛岄€昏緫灞傜殑鍙樺姩銆?SPAN lang=EN-US>
絎旇€呭湪欏圭洰涓噰鐢ㄤ簡濡備笅璁捐妯″紡銆?SPAN lang=EN-US>
2.1 鏁翠綋鏋舵瀯鈥斺€擬VC妯″紡錛堟ā鍨?瑙嗗浘-鎺у埗鍣級
簍 妯″瀷錛圡odel錛夛細妯″瀷鍖呭惈瀹屾垚浠誨姟鎵€闇€瑕佺殑鎵€鏈夌殑琛屼負鍜屾暟鎹€傚湪鏁版嵁鎸佷箙灞備腑錛屾ā鍨嬪嵆涓哄€煎璞′互鍙婃暟鎹闂璞°€?O:P>
簍 瑙嗗浘錛圴iew錛夛細鏁版嵁鎸佷箙灞備腑錛岃鍥懼氨鏄寔涔呭眰鍚屽叾瀹冨眰榪涜鏁版嵁浜ゆ崲鐨勫€煎璞★紙Transfer Object錛夊拰瑙嗗浘鍔╂墜瀵硅薄銆?O:P>
簍 鎺у埗鍣紙Controller錛夛細鎸佷箙灞傛墍闇€鐨勬帶鍒剁浉瀵圭畝鍗曪紝鍥犳闆嗘垚鍒頒簡鎺у埗浠g悊涓€?O:P>
鎸佷箙灞傛暣浣撻噰鐢?SPAN lang=EN-US>MVC妯″紡錛屼嬌寰楁暣涓暟鎹寔涔呭眰鐨勫疄鐜伴儴鍒嗕笌欏圭洰鐨勪笟鍔¢€昏緫閮ㄥ垎闅旂寮€鏉ワ紝鑳藉瀹炵幇瀵規帴鍙d綔澶х殑淇敼鑰屼笉闇€瑕佸鐩稿簲鐨勬ā鍨嬭繘琛屼慨鏀廣€傚彟澶栵紝鎸佷箙灞傛煇瀛愮郴緇熷彂鐢熷彉鍖栨椂錛屼笉浼氬獎鍝嶅埌鍏跺畠瀛愮郴緇熴€傛湁鍒╀簬鎻愰珮緋葷粺鐨勭ǔ瀹氭€с€佸彲緇存姢鎬с€?/SPAN>
2.2 鍊煎璞℃ā寮忥紙Value Object Pattern錛?/SPAN>
鍊煎璞$敤鏉ュ皝瑁呬笟鍔″璞°€傜浉搴旂殑鏂規硶璋冪敤鏄緗紙getter錛夊拰媯€绱紙setter錛夊€煎璞°€傚畠鏄換鎰忕殑鍙覆琛屽寲鐨凧ava瀵硅薄錛屽綋瀹㈡埛绔疊ean璇鋒眰涓氬姟鏁版嵁鏃訛紝璇ean鍙互鏋勯€犲€煎璞★紝鐢ㄥ睘鎬у€兼潵濉厖錛屽茍鎸夌収鍊兼妸瀹冧紶閫掔粰瀹㈡埛绔€?O:P>
鍦ㄧ瑪鑰呭紑鍙戦」鐩殑鏁版嵁鎸佷箙灞備綋緋葷粨鏋勪腑錛屽€煎璞′富瑕佸簲鐢ㄥ湪瀛愮郴緇熼棿浼犻€掋€佷氦鎹㈡暟鎹紙Transfer Object錛夊拰鏄犲皠鏁版嵁琛ㄤ袱涓柟闈紙Persistent Object錛夈€?O:P>
鍦ㄥ悇瀛愮郴緇熼棿榪涜鏁版嵁浼犻€掑拰鏁版嵁浜ゆ崲鏃訛紝浣跨敤鍊煎璞℃ā寮忚兘澶熸渶澶у寲鍦伴檷浣庣郴緇熼棿鏁版嵁浼犻€掔殑寮€閿€銆傚湪榪欑絳栫暐涓嬩紶閫掔殑鏄璞¤€屼笉鍐嶆槸涓€涓釜鐨勬湁鎰忎箟鐨勬暟鎹紝浣垮緱緋葷粺鍦ㄨ繘琛屾墿鍏呫€佷慨鏀規椂錛屽悇瀛愮郴緇熼棿鏁版嵁浼犻€掗儴鍒嗕笉浼氬彈鍒板獎鍝嶏紝鍥犱負鍚勫瓙緋葷粺浠呴渶瑕佸叧蹇冩槸鍚︽湁鍊煎璞¤浼犻€掞紝鑰屽茍涓嶅幓鍏沖績浼犻€掔殑鍒板簳鏄粈涔堟暟鎹€?SPAN lang=EN-US>
鍦ㄦ槧灝勬暟鎹簱琛ㄦ椂錛屽€煎璞$被鍙婂叾瀛愮被鎵€鏋勬垚鐨勬爲褰㈢粨鏋勮鐢ㄦ潵鏄犲皠涓€涓暟鎹簱琛紝璇ョ戶鎵挎爲閫氳繃XML閰嶇疆鏂囦歡瀵瑰簲鏁版嵁搴撲腑鐨勫崟涓〃錛岃繖浣垮緱鏈€搴曞眰鐨勫叧緋誨瀷鐨勬暟鎹簱琛ㄧ粨鏋勮兘澶熼潰鍚戝璞℃ā鍨嬫墍闅愯棌錛屽彟澶栵紝鐢變簬闈㈠悜瀵硅薄璁捐鏂規硶涓被鐨勫彲緇ф壙鎬э紝閲囩敤緇ф壙鏍戝搴斾竴涓〃鐨勭瓥鐣ヤ嬌寰楄鏄犲皠絳栫暐鏋佹槗鎵╁睍錛屽茍涓旇兘澶熷皢涓€涓鏉傜殑鏁版嵁琛ㄨ漿鍖栨垚鑻ュ共綆€鍗曠殑鍊煎璞℃潵琛ㄧず錛屾彁楂樹簡緋葷粺鐨勫彲緇存姢鎬у拰鍙慨鏀規€с€?O:P>
2.3 鏁版嵁璁塊棶瀵硅薄錛圖AO錛?/SPAN>
鏍規嵁鏁版嵁婧愪笉鍚岋紝鏁版嵁璁塊棶涔熶笉鍚屻€傛牴鎹瓨鍌ㄧ殑綾誨瀷(鍏崇郴鏁版嵁搴撱€侀潰鍚戝璞℃暟鎹簱絳?鍜屼緵搴斿晢涓嶅悓錛屾寔涔呮€у瓨鍌?姣斿鏁版嵁搴?鐨勮闂樊鍒篃寰堝ぇ銆傚綋涓氬姟緇勪歡鎴栬〃紺虹粍浠墮渶瑕佽闂煇鏁版嵁婧愭椂錛屽畠浠彲浠ヤ嬌鐢ㄥ悎閫傜殑API鏉ヨ幏寰楄繛鎺ユ€э紝浠ュ強鎿嶄綔璇ユ暟鎹簮銆備絾鏄湪榪欎簺緇勪歡涓寘鍚繛鎺ユ€у拰鏁版嵁璁塊棶浠g爜浼氬紩鍏ヨ繖浜涚粍浠跺強鏁版嵁婧愬疄鐜頒箣闂寸殑绱у瘑鑰﹀悎銆傜粍浠朵腑榪欑被浠g爜渚濊禆鎬т嬌搴旂敤紼嬪簭浠庢煇縐嶆暟鎹簮榪佺Щ鍒板叾瀹冪綾葷殑鏁版嵁婧愬皢鍙樺緱闈炲父楹葷儲鍜屽洶闅撅紝褰撴暟鎹簮鍙樺寲鏃訛紝緇勪歡涔熼渶瑕佹敼鍙橈紝浠ヤ究浜庤兘澶熷鐞嗘柊綾誨瀷鐨勬暟鎹簮銆?O:P>
絎旇€呭紑鍙戦」鐩殑鏁版嵁鎸佷箙灞備嬌鐢ㄦ暟鎹闂璞?SPAN lang=EN-US>(DAO)鏉ユ娊璞″拰灝佽鎵€鏈夊鏁版嵁婧愮殑璁塊棶銆侱AO綆$悊鐫€涓庢暟鎹簮鐨勮繛鎺ヤ互渚夸簬媯€绱㈠拰瀛樺偍鏁版嵁錛孌AO瀹炵幇浜嗙敤鏉ユ搷浣滄暟鎹簮鐨勮闂満鍒訛紝鍐呴儴灝佽浜嗗Hibenernate鏁版嵁鎿嶇旱銆佷簨鍔″鐞嗐€佷細璇濈鐞嗙瓑API鐨勫皝瑁呫€傚鐣屼緷璧栦簬DAO鐨勪笟鍔$粍浠朵負鍏跺鎴風浣跨敤DAO鎻愪緵浜嗘洿綆€鍗曠殑鎺ュ彛錛孌AO瀹屽叏鍚戝鎴風闅愯棌浜嗘暟鎹簮瀹炵幇緇嗚妭銆傜敱浜庡綋浣庡眰鏁版嵁婧愬疄鐜板彉鍖栨椂錛孌AO鍚戝鎴風鎻愪緵鐨勬帴鍙d笉浼氬彉鍖栵紝閲囩敤璇ヨ璁℃ā寮忓厑璁窪AO璋冩暣鍒頒笉鍚岀殑瀛樺偍妯″紡錛岃€屼笉浼氬獎鍝嶅叾瀹㈡埛绔垨涓氬姟緇勪歡錛屽嵆浣垮皢鏉ヤ笉鍐嶉噰鐢℉ibernate浣滀負鍏崇郴鏄犲皠妗嗘灦錛屼笂灞傚鎴風涔熶笉浼氬彈鍒頒換浣曞獎鍝嶃€傚彟澶栵紝DAO榪樺厖褰撶粍浠跺拰鏁版嵁婧愪箣闂寸殑閫傞厤鍣ㄧ殑瑙掕壊銆?O:P>
鏁版嵁鎸佷箙灞傞€氳繃璋冩暣鎶借薄宸ュ巶(Abstract Factory)妯″紡鍜屽伐鍘傛柟娉?Factory Method) 妯″紡(榪欎簩涓垱寤哄瀷妯″紡鐨勫疄鐜拌鎯呭弬瑙丟oF鐨?lt;璁捐妯″紡>)錛?錛屼嬌DAO妯″紡杈懼埌浜嗗緢楂樼殑鐏墊椿搴︺€?O:P>
褰撳簳灞傚瓨鍌ㄩ殢鐫€瀹炵幇鐨勫彉鍖栬€屽彉鍖栨椂錛岃絳栫暐鍙互閫氳繃浣跨敤鎶借薄宸ュ巶妯″紡瀹炵幇銆傛娊璞″伐鍘傚彲浠ュ熀浜庡伐鍘傛柟娉曞疄鐜拌€屽垱寤猴紝騫跺彲浣跨敤宸ュ巶鏂規硶瀹炵幇銆傝絳栫暐鎻愪緵涓€涓?SPAN lang=EN-US>DAO鐨勬娊璞″伐鍘傚璞★紝鍏朵腑璇ュ璞″彲浠ユ瀯閫犲縐嶇被鍨嬬殑鍏蜂綋鐨凞AO宸ュ巶錛屾瘡涓伐鍘傛敮鎸佷竴縐嶄笉鍚岀被鍨嬬殑鎸佷箙鎬у瓨鍌ㄥ疄鐜般€備竴鏃︿綘鑾峰彇鏌愮壒瀹氬疄鐜扮殑鍏蜂綋DAO宸ュ巶錛屽彲浠ヤ嬌鐢ㄥ畠鏉ョ敓鎴愯瀹炵幇涓墍鏀寔鍜屽疄鐜扮殑DAO銆?O:P>
2.4 榪炴帴姹犮€佸簲鐢ㄧ駭緙撳瓨鍙婁韓鍏冩ā寮忥紙鎻愬崌緋葷粺鎬ц兘錛?/SPAN>
簍 緙撳瓨錛圕ache錛?O:P>
瀵逛簬鏁版嵁搴撴潵璇達紝鍘傚晢鐨勫仛娉曞線寰€鏄湪鍐呭瓨涓紑杈熺浉搴旂殑鍖哄煙鏉ュ瓨鍌ㄥ彲鑳借澶氭瀛樺彇鐨?鏁版嵁鍜屽彲鑳借澶氭鎵ц鐨勮鍙ワ紝浠ヤ嬌榪欎簺鏁版嵁鍦ㄤ笅嬈¤璁塊棶鏃朵笉蹇呭啀嬈℃彁浜ゅDBMS鐨勮姹傚拰閭d簺璇彞鍦ㄤ笅嬈℃墽琛屾椂涓嶅繀鍐嶆緙栬瘧銆?O:P>
鍚屾牱錛屾暟鎹寔涔呭眰閲囩敤緙撳瓨鎶€鏈潵淇濆瓨宸茬粡浠庢暟鎹簱涓绱㈠嚭鏉ョ殑閮ㄥ垎甯哥敤鏁版嵁銆傚鎴風璁塊棶鎸佷箙灞傛椂錛屾寔涔呭眰灝嗛鍏堣闂紦瀛橈紝濡傛灉鑳藉鍛戒腑鍒欑洿鎺ヤ粠緙撳瓨涓彁鍙栨暟鎹紝鍚﹀垯鍐嶅悜鏁版嵁搴撳彂閫佹彁鍙栨暟鎹殑鎸囦護銆傝繖縐嶈璁¤兘澶熷ぇ騫呭害鍦版彁楂樻暟鎹闂€熷害銆?SPAN lang=EN-US>
簍 榪炴帴姹狅紙Connection Pool錛?O:P>
姹犳槸涓€涓緢鏅亶鐨勬蹇碉紝鍜岀紦鍐插瓨鍌ㄦ湁鏈哄埗鐩歌繎鐨勫湴鏂癸紝閮芥槸緙╁噺浜嗚闂殑鐜妭錛屼絾瀹冩洿娉ㄩ噸浜庤祫婧愮殑鍏變韓銆?SPAN lang=EN-US>
瀵逛簬璁塊棶鏁版嵁搴撴潵璇達紝寤虹珛榪炴帴鐨勪唬浠鋒瘮杈冩槀璐碉紝鍥犳錛屾暟鎹寔涔呭眰寤虹珛浜嗏€滆繛鎺ユ睜鈥濅互鎻愰珮璁塊棶鐨勬€ц兘銆傛暟鎹寔涔呭眰鎶婅繛鎺ュ綋浣滃璞★紝鏁翠釜緋葷粺鍚姩鍚庯紝榪炴帴姹犻鍏堝緩绔嬭嫢騫茶繛鎺ワ紝璁塊棶鏈潵闇€瑕佷笌鏁版嵁搴撹繛鎺ョ殑鍖哄煙錛岄兘鏀逛負鍜屾睜鐩歌繛錛屾睜涓存椂鍒嗛厤榪炴帴渚涜闂嬌鐢紝緇撴灉榪斿洖鍚庯紝璁塊棶灝嗚繛鎺ヤ氦榪樸€傝繖縐嶈璁℃秷闄や簡JDBC涓庢暟鎹簮寤虹珛榪炴帴鐨勫歡鏃訛紝鍚屾椂鍦ㄥ簲鐢ㄧ駭鎻愪緵浜嗗鏁版嵁婧愮殑騫跺彂璁塊棶銆?/SPAN>
簍 浜厓妯″紡錛團lyweight錛?O:P>
闈㈠悜瀵硅薄璇█鐨勫師鍒欏氨鏄竴鍒囬兘鏄璞★紝浣嗘槸濡傛灉鐪熸浣跨敤璧鋒潵錛屾湁鏃跺璞℃暟鍙兘鏄懼緱寰堝簽澶э紝姣斿錛屾暟鎹簱涓殑璁板綍錛屽鏋滀互姣忔潯璁板綍浣滀負涓€涓璞★紝鎻愬彇鍑犲崈鏉¤褰曪紝瀵硅薄鏁板氨鏄嚑鍗冿紝榪欐棤鐤戠浉褰撹€楄垂鍐呭瓨銆傛暟鎹寔涔呭眰渚濇嵁浜厓妯″紡璁捐浜嗚嫢騫插厓綾伙紝灝佽鍙互琚叡浜殑綾匯€傝繖縐嶈璁$瓥鐣ユ樉钁楅檷浣庝簡緋葷粺鐨勫唴瀛樻秷鑰椼€?SPAN lang=EN-US>
2.5 鍚勭瀵硅薄鐨勫垱寤烘ā寮?/SPAN>鈥?/SPAN>宸ュ巶鏂規硶錛?SPAN lang=EN-US>Factory Method錛?/SPAN>
宸ュ巶鏂規硶妯″紡灝嗗垱寤哄疄渚嬬殑宸ヤ綔涓庝嬌鐢ㄥ疄渚嬬殑宸ヤ綔鍒嗗紑錛屼篃灝辨槸璇達紝璁╁垱寤哄疄渚嬫墍闇€瑕佺殑澶ч噺鍒濆鍖栧伐浣滀粠綆€鍗曠殑鏋勯€犲嚱鏁頒腑鍒嗙鍑哄幓銆傚彧闇€瑕佽皟鐢ㄤ竴涓粺涓€鐨勬柟娉曪紝鍗沖彲鏍規嵁闇€瑕佸垱寤哄嚭鍚勭瀵硅薄鐨勫疄渚嬶紝瀵硅薄鐨勫垱寤烘柟娉曚笉鍐嶇敤緙栫爜鍒扮▼搴忔ā鍧椾腑錛岃€屾槸緇熶竴緙栧啓鍦ㄥ伐鍘傜被涓€傝繖鏍峰湪緋葷粺榪涜鎵╁厖淇敼鏃訛紝緋葷粺鐨勫彉鍖栦粎瀛樺湪浜庡伐鍘傜被鍐呴儴錛岃€岀粷瀵逛笉浼氬鍏朵粬瀵硅薄閫犳垚褰卞搷銆?/SPAN>
錛堟敹紼挎棩鏈燂細2004-12-31 Email錛?A href="mailto:chl@tsxd.sina.net">chl@tsxd.sina.net錛?/FONT>