锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鐢ㄤ簬閰嶇疆Hibernate鐨勬帴鍙o細Configuration鎺ュ彛
Hibernate鏍稿績鎺ュ彛
Configuration鎺ュ彛錛氶厤緗瓾ibernate,Hibernate搴旂敤閫氳繃Configuration瀹炰緥鏉ユ寚瀹氬璞?鍏崇郴鏄犲皠鏂囦歡鐨勪綅緗垨鍔ㄦ侀厤緗瓾ibernate鐨勫睘鎬э紝鐒跺悗鍒涘緩SessionFactory瀵硅薄瀹炰緥銆?/p>
SessionFactory鎺ュ彛錛氬垵濮嬪寲Hibernate,鍏呭綋鏁版嵁瀛樺偍婧愮殑浠g悊銆佸垱寤篠ession瀵硅薄銆?/p>
涓涓猄essionFactory瀹炰緥瀵瑰簲涓涓暟鎹瓨鍌ㄦ簮錛孒ibernate搴旂敤浠嶴essionFactory涓幏寰桽ession瀵硅薄瀹炰緥銆?/p>
鐗瑰畾錛氬畠鏄嚎紼嬪畨鍏ㄧ殑錛屾剰鍛崇潃鍚屼竴涓疄渚嬪彲浠ヨ搴旂敤鐨勫涓嚎紼嬪叡浜紝瀹冩槸閲嶉噺綰х殑錛屾剰鍛崇潃涓嶈兘闅忔剰鍒涘緩鎴栭攢姣佸疄渚嬶紝涓涓暟鎹簱璁塊棶鍙渶鍒涘緩涓涓疄渚嬨?/p>
Session鎺ュ彛錛氳礋璐d繚瀛樸佹洿鏂般佸垹闄ゃ佸姞杞姐佹煡璇㈠璞?/p>
Session鎺ュ彛琚О鍋氭寔涔呭寲綆$悊鍣紝姣忎釜Session瀹炰緥閮芥湁鑷凡鐨勭紦瀛橈紝鐢ㄦ潵瀛樻斁琚綋鍓嶅伐浣滃崟鍏冨姞杞界殑瀵硅薄涓斿彧鑳借褰撳墠宸ヤ綔鍗曞厓璁塊棶銆?/p>
鐗規э紝瀹冧笉鏄嚎紼嬪畨鍏ㄧ殑錛屽簲璇ラ伩鍏嶅涓嚎紼嬪叡浜悓涓涓猄ession瀹炰緥錛屽畠鏄交閲忕駭鐨勶紝鎰忓懗鐫鍒涘緩鎴栭攢姣佸疄渚嬩笉闇瑕佹秷鑰楀お澶氱殑璧勬簮錛屽彲浠ヤ負姣忎釜璇鋒眰鍒嗛厤鍗曠嫭鐨凷ession瀹炰緥錛屾垨鑰呬負姣忎釜宸ヤ綔鍗曞厓鍒嗛厤鍗曠嫭鐨凷ession瀹炰緥銆?/p>
Transation鎺ュ彛錛欻ibernate鐨勬暟鎹簱浜嬪姟鎺ュ彛錛屽搴曞眰鐨勪簨鍔℃帴鍙e仛浜嗗皝瑁呫?/p>
灝佽鐨勫簳灞備簨鍔℃帴鍙o細
JDBC API銆丣TA錛圝ava Transation錛堿PI銆丆ORBA錛圕ommon Object Request Broker Architecture錛堿PI
閫氳繃涓鑷寸殑Transation鎺ュ彛鏉ュ0鏄庝簨鍔¤竟鐣岋紝鏈夊埄浜庡簲鐢ㄥ湪涓嶅悓鐜鎴栧鍣ㄤ腑縐繪銆?/p>
Query鎺ュ彛鍜孋riteria鎺ュ彛錛氭墽琛屾暟鎹簱鏌ヨ錛屾帶鍒舵墽琛屾煡璇㈢殑榪囩▼銆?/p>
Query鎺ュ彛灝佽浜嗕竴涓潰鍚戝璞$殑鏌ヨ璇彞錛圚ibernate Query Language, HQL錛?/p>
Criteria鎺ュ彛灝佽浜嗗熀浜庡瓧絎︿覆褰㈠紡鐨勬煡璇㈣鍙ワ紝鎿呴暱浜庢墽琛屽姩鎬佹煡璇€?/p>
鍥炶皟鎺ュ彛錛欼nterceptor鎺ュ彛銆丩ifecycle鎺ュ彛銆乂alidatable鎺ュ彛
褰撲竴涓璞″彂鐢熶簡鐗瑰畾鐨勪簨浠訛紙濡傚姞杞姐佷繚瀛樸佹洿鏂般佸垹闄わ級錛孒ibernate搴旂敤鍙互閫氳繃鍥炶皟鏉ュ搷搴斾簨浠躲?/p>
鍥炶皟鎺ュ彛鎸夊疄鐜版柟寮忓彲鍒嗕負錛?/p>
Lifecycle鎺ュ彛鍜孷alidatable鎺ュ彛錛氱敱鎸佷箙鍖栫被鏉ュ疄鐜版帴鍙c?/p>
Lifecycle鎺ュ彛錛屼嬌鎸佷箙鍖栫被鐨勫疄渚嬭兘鍝嶅簲琚姞杞姐佷繚瀛樸佸垹闄ょ殑浜嬩歡銆?/p>
Validatable鎺ュ彛錛屼嬌鎸佷箙鍖栫被鐨勫疄渚嬪湪琚繚瀛樺墠榪涜鏁版嵁楠岃瘉銆?/p>
Interceptor鎺ュ彛錛氫笉蹇呯敱鎸佷箙鍖栫被鏉ュ疄鐜版帴鍙c侷nterceptor瀹炵幇綾昏礋璐e搷搴旀寔涔呭寲綾葷殑瀹炰緥琚姞杞姐佷繚瀛樸佹洿鏂般佸垹闄ょ殑浜嬩歡銆?/p>
鏄犲皠綾誨瀷鎺ュ彛錛歍ype鎺ュ彛銆乁serType鎺ュ彛銆丆ompositeUserType鎺ュ彛
Type鎺ュ彛錛岃〃紺篐ibernate鏄犲皠綾誨瀷錛岀敤浜庢妸鍩熷璞℃槧灝勪負鏁版嵁搴撶殑鍏崇郴鏁版嵁銆?/p>
Type鎺ュ彛鐨勫疄鐜扮被錛歅rimitiveType綾伙紝鏄犲皠Java鍩烘湰綾誨瀷銆侱ateType綾伙紝鏄犲皠Java鏃ユ湡綾誨瀷銆?/p>
鎵╁睍鎺ュ彛錛?/p>
瀹氬埗涓婚敭鐨勭敓鎴愮瓥鐣ワ細IndentifierGenerator鎺ュ彛
瀹氬埗鏈湴SQL鏂硅█錛欴ialect鎶借薄綾?/p>
瀹氬埗緙撳瓨鏈哄埗錛欳ache鎺ュ彛銆丆acheProvider鎺ュ彛
瀹氬埗JDBC榪炴帴綆$悊錛欳onnectionProvider鎺ュ彛
瀹氬埗浜嬪姟綆$悊錛歍ransationFactory鎺ュ彛銆乀ransation鎺ュ彛銆乀ransationManagerLookup鎺ュ彛
瀹氬埗ORM絳栫暐錛欳lassPersister鎺ュ彛鍙婂叾瀛愭帴鍙?/p>
瀹氬埗灞炴ц闂瓥鐣ワ細PropertyAccesser鎺ュ彛
鍒涘緩浠g悊錛歅roxyFactory鎺ュ彛
瀹氬埗瀹㈡埛鍖栨槧灝勭被鍨嬶細UserType鎺ュ彛銆丆ompositeUserType鎺ュ彛銆?/p>
鍦℉ibernate涓鐞嗘壒閲忔洿鏂板拰鎵歸噺鍒犻櫎
鎵歸噺鏇存柊鏄寚鍦ㄤ竴涓簨鍔′腑鏇存柊澶ф壒閲忔暟鎹紝鎵歸噺鍒犻櫎鏄寚鍦ㄤ竴涓簨鍔′腑鍒犻櫎澶ф壒閲忔暟鎹紝浠ヤ笅紼嬪簭鐩存帴閫氳繃Hibernate API鎵歸噺鏇存柊
tx = session.beginTransaction();
Iterator customers=session.find("from Customer c where c.age>0").iterator();
while(customers.hasNext()){
Customer customer=(Customer)customers.next();
customer.setAge(customer.getAge()+1);
}
tx.commit();
session.close();
濡傛灉CUSTOMERS琛ㄤ腑鏈?涓囨潯騫撮緞澶т簬闆剁殑璁板綍錛岄偅涔圫ession鐨刦ind()鏂規硶浼氫竴涓嬪瓙鍔犺澆1涓囦釜Customer瀵硅薄鍒板唴瀛樸傚綋鎵цtx.commit()鏂規硶鏃訛紝浼氭竻鐞嗙紦瀛橈紝Hibernate鎵ц1涓囨潯鏇存柊CUSTOMERS琛ㄧ殑update璇彞錛?/p>
update CUSTOMERS set AGE=? 鈥? where ID=i;
update CUSTOMERS set AGE=? 鈥? where ID=j;
鈥︹?br />update CUSTOMERS set AGE=? 鈥? where ID=k;
浠ヤ笂鎵歸噺鏇存柊鏂瑰紡鏈変袱涓己鐐癸細
(1) 鍗犵敤澶ч噺鍐呭瓨錛屽繀欏繪妸1涓囦釜Customer瀵硅薄鍏堝姞杞藉埌鍐呭瓨錛岀劧鍚庝竴涓鏇存柊瀹冧滑銆?/p>
(2) 鎵ц鐨剈pdate璇彞鐨勬暟鐩お澶氾紝姣忎釜update璇彞鍙兘鏇存柊涓涓狢ustomer瀵硅薄錛屽繀欏婚氳繃1涓囨潯update璇彞鎵嶈兘鏇存柊涓涓囦釜Customer瀵硅薄錛岄綣佺殑璁塊棶鏁版嵁搴擄紝浼氬ぇ澶ч檷浣庡簲鐢ㄧ殑鎬ц兘銆?/p>
涓轟簡榪呴熼噴鏀?涓囦釜Customer瀵硅薄鍗犵敤鐨勫唴瀛橈紝鍙互鍦ㄦ洿鏂版瘡涓狢ustomer瀵硅薄鍚庯紝灝辮皟鐢⊿ession鐨別vict()鏂規硶绔嬪嵆閲婃斁瀹冪殑鍐呭瓨錛?/p>
tx = session.beginTransaction();
Iterator customers=session.find("from Customer c where c.age>0").iterator();
while(customers.hasNext()){
Customer customer=(Customer)customers.next();
customer.setAge(customer.getAge()+1);
session.flush();
session.evict(customer);
}
tx.commit();
session.close();
鍦ㄤ互涓婄▼搴忎腑錛屼慨鏀逛簡涓涓狢ustomer瀵硅薄鐨刟ge灞炴у悗錛屽氨绔嬪嵆璋冪敤Session鐨刦lush()鏂規硶鍜宔vict()鏂規硶錛宖lush()鏂規硶浣縃ibernate绔嬪埢鏍規嵁榪欎釜Customer瀵硅薄鐨勭姸鎬佸彉鍖栧悓姝ユ洿鏂版暟鎹簱錛屼粠鑰岀珛鍗蟲墽琛岀浉鍏崇殑update璇彞錛沞vict()鏂規硶鐢ㄤ簬鎶婅繖涓狢ustomer瀵硅薄浠庣紦瀛樹腑娓呴櫎鍑哄幓錛屼粠鑰屽強鏃墮噴鏀懼畠鍗犵敤鐨勫唴瀛樸?/p>
浣唀vict()鏂規硶鍙兘紼嶅井鎻愰珮鎵歸噺鎿嶄綔鐨勬ц兘錛屽洜涓轟笉綆℃湁娌℃湁浣跨敤evict()鏂規硶錛孒ibernate閮藉繀欏繪墽琛?涓囨潯update璇彞錛屾墠鑳芥洿鏂?涓囦釜Customer瀵硅薄錛岃繖鏄獎鍝嶆壒閲忔搷浣滄ц兘鐨勯噸瑕佸洜绱犮傚亣濡侶ibernate鑳界洿鎺ユ墽琛屽涓婼QL璇彞錛?/p>
update CUSTOMERS set AGE=AGE+1 where AGE>0;
閭d箞浠ヤ笂涓鏉pdate璇彞灝辮兘鏇存柊CUSTOMERS琛ㄤ腑鐨?涓囨潯璁板綍銆備絾鏄疕ibernate騫舵病鏈夌洿鎺ユ彁渚涙墽琛岃繖縐島pdate璇彞鐨勬帴鍙c傚簲鐢ㄧ▼搴忓繀欏葷粫榪嘓ibernate API錛岀洿鎺ラ氳繃JDBC API鏉ユ墽琛岃SQL璇彞錛?/p>
tx = session.beginTransaction();
Connection con=session.connection();
PreparedStatement stmt=con.prepareStatement("update CUSTOMERS set AGE=AGE+1 "
+"where AGE>0 ");
stmt.executeUpdate();
tx.commit();
浠ヤ笂紼嬪簭婕旂ず浜嗙粫榪嘓ibernate API錛岀洿鎺ラ氳繃JDBC API璁塊棶鏁版嵁搴撶殑榪囩▼銆傚簲鐢ㄧ▼搴忛氳繃Session鐨刢onnection()鏂規硶鑾峰緱璇ession浣跨敤鐨勬暟鎹簱榪炴帴錛岀劧鍚庨氳繃瀹冨垱寤篜reparedStatement瀵硅薄騫舵墽琛孲QL璇彞銆傚煎緱娉ㄦ剰鐨勬槸錛屽簲鐢ㄧ▼搴忎粛鐒墮氳繃Hibernate鐨凾ransaction鎺ュ彛鏉ュ0鏄庝簨鍔¤竟鐣屻?/p>
濡傛灉搴曞眰鏁版嵁搴擄紙濡侽racle錛夋敮鎸佸瓨鍌ㄨ繃紼嬶紝涔熷彲浠ラ氳繃瀛樺偍榪囩▼鏉ユ墽琛屾壒閲忔洿鏂般傚瓨鍌ㄨ繃紼嬬洿鎺ュ湪鏁版嵁搴撲腑榪愯錛岄熷害鏇村姞蹇傚湪Oracle鏁版嵁搴撲腑鍙互瀹氫箟涓涓悕涓篵atchUpdateCustomer()鐨勫瓨鍌ㄨ繃紼嬶紝浠g爜濡備笅錛?/p>
create or replace procedure batchUpdateCustomer(p_age in number) as
begin
update CUSTOMERS set AGE=AGE+1 where AGE>p_age;
end;
浠ヤ笂瀛樺偍榪囩▼鏈変竴涓弬鏁皃_age錛屼唬琛ㄥ鎴風殑騫撮緞錛屽簲鐢ㄧ▼搴忓彲鎸夌収浠ヤ笅鏂瑰紡璋冪敤瀛樺偍榪囩▼錛?/p>
tx = session.beginTransaction();
Connection con=session.connection();
String procedure = "{call batchUpdateCustomer(?) }";
CallableStatement cstmt = con.prepareCall(procedure);
cstmt.setInt(1,0); //鎶婂勾榫勫弬鏁拌涓?
cstmt.executeUpdate();
tx.commit();
浠庝笂闈㈢▼搴忕湅鍑猴紝搴旂敤紼嬪簭涔熷繀欏葷粫榪嘓ibernate API錛岀洿鎺ラ氳繃JDBC API鏉ヨ皟鐢ㄥ瓨鍌ㄨ繃紼嬨?/p>
Session鐨勫悇縐嶉噸杞藉艦寮忕殑update()鏂規硶閮戒竴嬈″彧鑳芥洿鏂頒竴涓璞★紝鑰宒elete()鏂規硶鐨勬湁浜涢噸杞藉艦寮忓厑璁鎬互HQL璇彞浣滀負鍙傛暟錛屼緥濡傦細
session.delete("from Customer c where c.age>0");
濡傛灉CUSTOMERS琛ㄤ腑鏈?涓囨潯騫撮緞澶т簬闆剁殑璁板綍錛岄偅涔堜互涓婁唬鐮佽兘鍒犻櫎涓涓囨潯璁板綍銆備絾鏄疭ession鐨刣elete()鏂規硶騫舵病鏈夋墽琛屼互涓媎elete璇彞錛?/p>
delete from CUSTOMERS where AGE>0;
Session鐨刣elete()鏂規硶鍏堥氳繃浠ヤ笅select璇彞鎶?涓囦釜Customer瀵硅薄鍔犺澆鍒板唴瀛樹腑錛?/p>
select * from CUSTOMERS where AGE>0;
鎺ヤ笅鏉ユ墽琛屼竴涓囨潯delete璇彞錛岄愪釜鍒犻櫎Customer瀵硅薄錛?/p>
delete from CUSTOMERS where ID=i;
delete from CUSTOMERS where ID=j;
鈥︹?br />delete from CUSTOMERS where ID=k;
鐢辨鍙錛岀洿鎺ラ氳繃Hibernate API榪涜鎵歸噺鏇存柊鍜屾壒閲忓垹闄ら兘涓嶅煎緱鎺ㄨ崘銆傝岀洿鎺ラ氳繃JDBC API鎵ц鐩稿叧鐨凷QL璇彞鎴栬皟鐢ㄧ浉鍏崇殑瀛樺偍榪囩▼錛屾槸鎵歸噺鏇存柊鍜屾壒閲忓垹闄ょ殑鏈浣蟲柟寮忥紝榪欎袱縐嶆柟寮忛兘鏈変互涓嬩紭鐐癸細
(1) 鏃犻渶鎶婃暟鎹簱涓殑澶ф壒閲忔暟鎹厛鍔犺澆鍒板唴瀛樹腑錛岀劧鍚庨愪釜鏇存柊鎴栦慨鏀瑰畠浠紝鍥犳涓嶄細娑堣楀ぇ閲忓唴瀛樸?/p>
(2) 鑳藉湪涓鏉QL璇彞涓洿鏂版垨鍒犻櫎澶ф壒閲忕殑鏁版嵁銆?/p>
鍦╤ibernate涓紝鏈鏍稿績鐨勬蹇靛氨鏄PO鐨勭姸鎬佺鐞嗭紝涓涓狿O鏈変笁縐嶇姸鎬侊細
鏈鎸佷箙鍖栫殑VO
姝ゆ椂灝辨槸涓涓唴瀛樺璞O錛岀敱JVM綆$悊鐢熷懡鍛ㄦ湡
宸茶鎸佷箙鍖栫殑PO錛屽茍涓斿湪Session浣垮懡鍛ㄦ湡鍐?/p>
姝ゆ椂鏄犲皠鏁版嵁搴撴暟鎹紝鐢辨暟鎹簱綆$悊鐢熷懡鍛ㄦ湡
鏇捐鎸佷箙鍖栬繃錛屼絾鐜板湪鍜孲ession宸茬粡detached浜嗭紝浠O鐨勮韓浠藉湪榪愯銆?/p>
榪欑鍜孲ession宸茬粡detached鐨凱O榪樿兘澶熻繘鍏ュ埆涓涓猄ession錛岀戶緇繘琛孭O鐘舵佺姸綆★紝姝ゆ椂瀹冨氨鎴愪負PO鐨勭浜岀鐘舵佷簡銆?/p>
榪欑PO瀹為檯涓婃槸璺ㄤ簡Session榪涜浜嗙姸鎬佺淮鎶ょ殑銆?/span>
鍦ㄤ紶緇熺殑JDO1.x涓紝PO鍙湁鍓嶉潰涓ょ鐘舵侊紝涓涓狿O涓鏃﹁劚紱籔M錛屽氨涓уけ浜嗙姸鎬佷簡錛屼笉鍐嶅拰鏁版嵁搴撴暟鎹叧鑱旓紝鎴愪負涓涓函綺圭殑鍐呭瓨VO錛屽畠鍗充嬌榪涘叆涓涓柊鐨凱M錛屼篃涓嶈兘鎭㈠瀹冪殑鐘舵佷簡銆?
Hibernate寮虹殑鍦版柟灝卞湪浜庯紝涓涓狿O鑴辯Session涔嬪悗錛岃繕鑳戒繚鎸佺姸鎬侊紝鍐嶈繘鍏ヤ竴涓柊鐨凷ession涔嬪悗錛屽氨鎭㈠鐘舵佺鐞嗙殑鑳藉姏錛屼絾姝ゆ椂鐘舵佺鐞嗛渶瑕佷嬌鐢╯ession.update鎴栬卻ession.saveOrUpdate錛岃繖灝辨槸Hibernate Reference涓彁鍒扮殑鈥渞equires a slightly different programming model 鈥?/p>
]]>
主站蜘蛛池模板:
久久精品国产亚洲香蕉|
亚洲一级片免费看|
亚洲伦理一二三四|
国产妇乱子伦视频免费|
337p日本欧洲亚洲大胆色噜噜
|
亚洲国产精品激情在线观看
|
一级做a爰片久久毛片免费陪|
免费国产在线观看老王影院|
无码天堂va亚洲va在线va|
国产一区二区三区免费看|
特级毛片全部免费播放a一级
|
亚洲人成精品久久久久|
无码少妇精品一区二区免费动态|
精品亚洲aⅴ在线观看|
在线视频精品免费|
亚洲AV无码国产一区二区三区|
国产无遮挡色视频免费视频|
免费一级特黄特色大片|
国产成人A亚洲精V品无码|
日韩精品免费视频|
亚洲专区一路线二|
国产极品美女高潮抽搐免费网站|
免费毛片毛片网址|
亚洲天堂久久精品|
毛片免费观看网址|
国产精品亚洲精品日韩电影|
自拍偷自拍亚洲精品第1页|
美女内射毛片在线看免费人动物|
亚洲综合无码一区二区痴汉|
亚洲AⅤ永久无码精品AA
|
天天看免费高清影视|
成人在线免费视频|
67pao强力打造67194在线午夜亚洲|
成人毛片免费视频|
国产免费AV片在线观看播放|
亚洲系列国产精品制服丝袜第|
日韩免费视频在线观看|
日韩av无码免费播放|
日韩亚洲人成在线|
亚洲精品乱码久久久久久蜜桃不卡|
国产精品久久久久免费a∨|