鍦⊿ession鐨勭紦瀛樹腑瀛樻斁鐨勬槸鐩鎬簰鍏寵仈鐨勫璞″浘銆傞粯璁ゆ儏鍐典笅錛屽綋Hibernate浠庢暟鎹簱涓姞杞紺ustomer瀵硅薄鏃訛紝浼氬悓鏃跺姞杞芥墍鏈夊叧鑱旂殑 Order瀵硅薄銆備互Customer鍜孫rder綾諱負渚嬶紝鍋囧畾ORDERS琛ㄧ殑CUSTOMER_ID澶栭敭鍏佽涓簄ull
浠ヤ笅Session鐨刦ind()鏂規硶鐢ㄤ簬鍒版暟鎹簱涓绱㈡墍鏈夌殑Customer瀵硅薄錛?nbsp;
List customerLists=session.find("from Customer as c");
榪愯浠ヤ笂find()鏂規硶鏃訛紝Hibernate灝嗗厛鏌ヨCUSTOMERS琛ㄤ腑鎵鏈夌殑璁板綍錛岀劧鍚庢牴鎹瘡鏉¤褰曠殑ID錛屽埌ORDERS琛ㄤ腑鏌ヨ鏈夊弬鐓у叧緋葷殑璁板綍錛孒ibernate灝嗕緷嬈℃墽琛屼互涓媠elect璇彞錛?nbsp;
select * from CUSTOMERS;
select * from ORDERS where CUSTOMER_ID=1;
select * from ORDERS where CUSTOMER_ID=2;
select * from ORDERS where CUSTOMER_ID=3;
select * from ORDERS where CUSTOMER_ID=4;
閫氳繃浠ヤ笂5鏉elect璇彞錛孒ibernate鏈鍚庡姞杞戒簡4涓狢ustomer瀵硅薄鍜?涓狾rder瀵硅薄錛屽湪鍐呭瓨涓艦鎴愪簡涓騫呭叧鑱旂殑瀵硅薄鍥?
Hibernate鍦ㄦ绱笌Customer鍏寵仈鐨凮rder瀵硅薄鏃訛紝浣跨敤浜嗛粯璁ょ殑绔嬪嵆媯绱㈢瓥鐣ャ傝繖縐嶆绱㈢瓥鐣ュ瓨鍦ㄤ袱澶т笉瓚籌細
錛?錛? select璇彞鐨勬暟鐩お澶氾紝闇瑕侀綣佺殑璁塊棶鏁版嵁搴擄紝浼氬獎鍝嶆绱㈡ц兘銆傚鏋滈渶瑕佹煡璇涓狢ustomer瀵硅薄錛岄偅涔堝繀欏繪墽琛宯+1嬈elect鏌ヨ璇?鍙ャ傝繖灝辨槸緇忓吀鐨刵+1嬈elect鏌ヨ闂銆傝繖縐嶆绱㈢瓥鐣ユ病鏈夊埄鐢⊿QL鐨勮繛鎺ユ煡璇㈠姛鑳斤紝渚嬪浠ヤ笂5鏉elect璇彞瀹屽叏鍙互閫氳繃浠ヤ笅1鏉?select璇彞鏉ュ畬鎴愶細
select * from CUSTOMERS left outer join ORDERS
on CUSTOMERS.ID=ORDERS.CUSTOMER_ID
浠ヤ笂select璇彞浣跨敤浜哠QL鐨勫乏澶栬繛鎺ユ煡璇㈠姛鑳斤紝鑳藉鍦ㄤ竴鏉elect璇彞涓煡璇㈠嚭CUSTOMERS琛ㄧ殑鎵鏈夎褰曪紝浠ュ強鍖歸厤鐨凮RDERS琛ㄧ殑璁板綍銆?nbsp;
錛?錛夊湪搴旂敤閫昏緫鍙渶瑕佽闂瓹ustomer瀵硅薄錛岃屼笉闇瑕佽闂甇rder瀵硅薄鐨勫満鍚堬紝鍔犺澆Order瀵硅薄瀹屽叏鏄浣欑殑鎿嶄綔錛岃繖浜涘浣欑殑Order瀵硅薄鐧界櫧嫻垂浜嗚澶氬唴瀛樼┖闂淬?nbsp;
涓轟簡瑙e喅浠ヤ笂闂錛?span color="#ff0000" style="color: #ff0000;">Hibernate鎻愪緵浜嗗叾浠栦袱縐嶆绱㈢瓥鐣ワ細寤惰繜媯绱㈢瓥鐣ュ拰榪垏宸﹀榪炴帴媯绱㈢瓥鐣ャ傚歡榪熸绱㈢瓥鐣ヨ兘閬垮厤澶氫綑鍔犺澆搴旂敤紼嬪簭涓嶉渶瑕佽闂殑鍏寵仈瀵硅薄錛岃揩鍒囧乏澶栬繛鎺ユ绱㈢瓥鐣ュ垯鍏呭垎鍒╃敤浜哠QL鐨勫榪炴帴鏌ヨ鍔熻兘錛岃兘澶熷噺灝憇elect璇彞鐨勬暟鐩?/span>
瀵規暟鎹簱璁塊棶榪樻槸蹇呴』鑰冭檻鎬ц兘闂鐨勶紝 鍦ㄨ瀹氫簡1 瀵瑰榪欑鍏崇郴涔嬪悗錛?鏌ヨ灝變細鍑虹幇浼犺涓殑n +1 闂銆?nbsp;
1 錛? 瀵瑰錛屽湪1 鏂癸紝鏌ユ壘寰楀埌浜唍 涓璞★紝 閭d箞鍙堥渶瑕佸皢n 涓璞″叧鑱旂殑闆嗗悎鍙栧嚭錛屼簬鏄湰鏉ョ殑涓鏉ql鏌ヨ鍙樻垚浜唍 +1 鏉?nbsp;
2錛夊瀵? 錛屽湪澶氭柟錛屾煡璇㈠緱鍒頒簡m涓璞★紝閭d箞涔熶細灝唌涓璞″搴旂殑1 鏂圭殑瀵硅薄鍙栧嚭錛?涔熷彉鎴愪簡m+1
鎬庝箞瑙e喅n +1 闂錛?nbsp;
1 錛塴azy=true錛?hibernate3寮濮嬪凡緇忛粯璁ゆ槸lazy=true浜嗭紱lazy=true鏃朵笉浼氱珛鍒繪煡璇㈠叧鑱斿璞★紝鍙湁褰撻渶瑕佸叧鑱斿璞★紙璁塊棶鍏跺睘鎬э紝闈瀒d瀛楁錛夋椂鎵嶄細鍙戠敓鏌ヨ鍔ㄤ綔銆?nbsp;
2錛変簩綰х紦瀛橈紝 鍦ㄥ璞℃洿鏂幫紝鍒犻櫎錛屾坊鍔犵浉瀵逛簬鏌ヨ瑕佸皯寰楀鏃訛紝 浜岀駭緙撳瓨鐨勫簲鐢ㄥ皢涓嶆昻 +1 闂錛屽洜涓哄嵆浣跨涓嬈℃煡璇㈠緢鎱紝涔嬪悗鐩存帴緙撳瓨鍛戒腑涔熸槸寰堝揩鐨勩?nbsp;
涓嶅悓瑙e喅鏂規硶錛屼笉鍚岀殑鎬濊礬錛岀浜屾潯鍗村垰濂藉張鍒╃敤浜唍 +1 銆?/span>
3) 褰撶劧浣犱篃鍙互璁懼畾fetch=join(annotation : @ManyToOne() @Fetch(FetchMode.JOIN))