hibernate鏍稿績寮€鍙戞帴鍙?四)

hibernate鏍稿績寮€鍙戞帴鍙?4)

1.Configuration

聽 聽 聽 a) 聽 浣跨敤annotation鐨勬椂鍊欙紝鐢ˋnnotationConfiguration

聽 聽 聽 b锛?涓昏鏄繘琛岄厤缃俊鎭鐞?/p>

聽 聽 聽 c) 聽 鐢ㄦ潵浜х敓SessionFactory

聽 聽 聽 d ) 聽鍙互鍦╟onfigure鏂规硶涓寚瀹歨ibernate閰嶇疆鏂囦欢love.xml 聽聽

  sessionFactory = new AnnotationConfiguration().configure("love.xml").buildSessionFactory();//璇诲彇src鐩綍鐨勪笅鐨刲ove.xml鏂囦欢

聽 聽 聽 e锛?鍙渶瑕佸叧娉ㄤ竴涓柟娉曞嵆锛歜uildSessionFactory

2.SessionFactoty閲岄潰绠$悊浜嗕竴绯诲垪鐨勮繛鎺ユ睜锛屽畠鐢ㄦ潵浜х敓Session锛岀劧鍚庝粠姹犻噷闈㈡嬁鍑轰竴涓猚onnection鎸傚埌浜х敓鐨凷ession涓婇潰

聽 聽 聽 聽 聽a) 聽鐢ㄦ潵浜х敓鍜岀鐞哠ession

聽 聽 聽 聽 聽b锛夐€氬父鎯呭喌涓嬫瘡涓簲鐢ㄥ彧闇€瑕佷竴涓猄essionFactory

聽 聽 聽 聽 聽C) 闄ら潪瑕佽闂涓暟鎹簱鐨勬儏鍐?/p>

聽 聽 聽 聽 聽D锛?鍏虫敞2涓柟娉曞嵆锛歰penSession getCurrentSession

鍖哄埆锛歰penSession涓巊etCurrentSession鐨勫尯鍒紵

1.openSession:姘歌繙鏄墦寮€鏂扮殑Session锛岄渶瑕佹墜鍔╟lose銆?/p>

2.getCurrentSession:濡傛灉Current Session Context涓凡缁忔湁浜哠ession浜嗭紝瀹冨氨浼氭嬁褰撳墠鐜涓璖ession銆傚鏋滄病鏈夛紝灏辨墦寮€鏂扮殑Session骞跺瓨鏀句簬Current Session Context涓€?/p>

聽 a.getCurrentSession鑾峰彇鐨凷ession浼氬瓨鏀句簬Current Session Context涓?鍦╤ibernate.cfg.xml鍙互璁剧疆Current Session Context鏄粈涔?锛岃€宱penSession涓嶄細

聽 b.getCurrentSession鑾峰彇鐨凷ession鎻愪氦鍚庝細鑷姩close锛屾墍浠ュ綋鎻愪氦鍚庡啀娆etCurrentSession鑾峰彇Session鏃讹紝灏变笉鏄悓涓€涓簡

3.Session

聽 聽 聽 聽 聽 A) 绠$悊涓€涓暟鎹簱鐨勪换鍔″崟鍏?鍗硈ession鏉ュ府鎴戜滑绠$悊鏁版嵁搴撶殑澧烇紝鍒狅紝鏀癸紝鏌ョ殑鎿嶄綔

聽 聽 聽 聽 聽 B锛夋柟娉曪紙CRUD)

聽 聽 聽 聽 聽 聽 聽 聽i. 聽 聽Save()

聽 聽 聽 聽 聽 聽 聽 聽Ii. 聽 Delete

聽 聽 聽 聽 聽 聽 聽 聽Iii 聽 update,update璇彞鐨勫彂鍑哄湪commit鐨勬椂鍊?/p>

1.涓夌鐘舵€佺殑鍖哄垎鍏抽敭鍦ㄤ簬

聽 聽 聽 聽A) 聽 鏈夋病鏈塈D

聽 聽 聽 聽B) 聽 ID鍦ㄦ暟鎹簱涓湁娌℃湁

聽 聽 聽 聽C) 聽 鍦ㄥ唴瀛樹腑鏈夋病鏈夛紙session缂撳瓨锛?/p>

6.Session

聽 聽A) 绠$悊涓€涓暟鎹簱鐨勪换鍔″崟鍏?/p>

聽 聽B)鏂规硶

聽 聽 聽 聽 I 聽 save()

聽 聽 聽 聽 Ii 聽 delete()鍙鏁版嵁搴撲腑杩欐潯璁板綍鏈塱d锛屽氨鍙互delete()

聽 聽 聽 聽 Iii 聽 update()蹇呴』鏁版嵁搴撲腑鏈夎繖鏉¤褰曟墠鑳絬pdate(),鎵€浠ransient鐘舵€佺殑瀵硅薄涓嶈兘update锛屽洜涓烘暟鎹簱涓繕杩樻病鏈夎繖涓璞$殑璁板綍

聽 聽 聽 聽 Iv 聽 save or update()

聽 聽 聽 聽 V 聽 聽load

聽 聽 聽 聽 Vi 聽 get

聽 聽 聽 聽 Vii 聽get涓巐oad鐨勫尯鍒?/p>

聽 聽 聽 聽 聽 聽 1.涓嶅瓨鍦ㄥ搴旇褰曟槸琛ㄧ幇涓嶄竴鏍?/p>

聽 聽 聽 聽 聽 聽 2.load杩樺洖鐨勬槸浠g悊瀵硅薄锛岀瓑鍒扮湡姝g敤鍒板璞$殑鍐呭鏄墠鍙戝嚭sql璇彞

鍙互閫氳繃System.out.println(t.getClass());鏉ヨ瘉鏄巘鎵€寮曠敤鐨勫璞$殑绫诲瀷涓嶆槸Teacher绫诲瀷鐨?/p>

聽 聽 聽 聽 聽 聽 3.get鐩存帴浠庢暟鎹簱鍔犺浇浜х敓涓€涓璞★紝涓嶄細寤惰繜

鍙互閫氳繃System.out.println(t.getClass());鏉ヨ瘉鏄巘鎵€寮曠敤鐨勫璞$被鍨嬫槸Teacher绫诲瀷鐨?/p>

聽 聽 聽 聽 viii 聽update

聽 聽 聽 聽 聽 聽 聽1. 鐢ㄦ潵鏇存柊detached瀵硅薄锛屾洿鏂板畬鎴愬悗杞负peisistent鐘舵€?鍒濊》锛屼絾瀹為檯涓嶆槸杩欐牱锛?/p>

聽 聽 聽 聽 聽 聽 聽2.鏇存柊transient瀵硅薄浼氭姤閿?/p>

聽 聽 聽 聽 聽 聽 聽3.鏇存柊鑷繁鎸囧畾id鐨則ransient瀵硅薄鍙互锛?鍓嶆彁鏁版嵁搴撲腑瑕佹湁璇d鐨勮褰曪級

聽 聽 聽 聽 聽 聽 聽4.persistent鐘舵€佺殑瀵硅薄锛堝綋涓€涓猵ersistent鐘舵€佺殑瀵硅薄锛岄噷闈㈢殑鍊艰鏀瑰彉鐨勬椂鍊欙紝濡傛灉璺熷師鏉ュ€肩浉鍚岋紝閭d箞hibernate灏变笉浼氬彂update璇彞锛涘鏋滆窡鍘熸潵鍊间笉鍚岋紝hibernate灏变細鍙憉pdate璇彞锛屽彂鐨勬椂鍊欎細灏嗘墍鏈夊瓧娈甸兘鏇存柊锛?/p>

璇存槑锛氫笂闈㈢殑1234铏界劧浣犲彧鏇存敼浜嗛儴鍒嗗瓧娈碉紝浣嗘槸update鐨勬椂鍊欙紝浼氭妸鎵€鏈夊瓧娈祏pdate涓€杈癸紝杩欐牱鐨勬晥鐜囧緢浣?/p>

聽 聽 聽 聽 聽 聽 聽4.鏇存柊閮ㄥ垎鏇存敼鐨勫瓧娈?/p>

聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 A锛?聽xml璁惧畾property鏍囩鐨剈pdate灞炴€э紝annotation璁惧畾@Column鐨剈pdatable灞炴€э紙@Conlumn(updatable=false)鏀惧埌鏂规硶涓婇潰)锛屼笉杩囪繖绉嶆柟寮忓緢灏戜娇鐢紝鍥犱负涓嶇伒娲?/p>

聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 B锛変娇鐢▁ml涓殑dynamic-update<class name="Student" dynamic-update=鈥漷rue鈥?gt;,JPA1.0 Annotation娌℃湁瀵瑰簲鐨勫睘鎬э紝

聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Hibernate鎵╁睍锛?/p>

聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 1. 聽 鍚屼竴涓猻ession鍙互锛岋紝璺╯ession涓嶈锛屼笉杩囧彲浠ョ敤merge()

(涓嶉噸瑕侊級

聽 聽 聽 聽 聽 聽 聽 聽 聽 聽C锛?浣跨敤HQL(EJBQL)(寤鸿锛?/p>

聽 聽 聽 聽 聽vII .saveOrUpdate();

聽 聽 聽 聽 聽vIII. Clear鏂规硶

聽 聽 聽 聽 聽 聽 聽 1.鏃犺鏄痩oad杩樻槸get锛岄兘浼氶鍏堟煡鎵緎ession绾х殑缂撳瓨锛堜竴绾х紦瀛橈級锛屽鏋滄病鏈夛紝鎵嶄細鍘绘暟鎹簱鏌ユ壘锛岃皟鐢╟lear锛堬級鏂规硶鍙互寮哄埗娓呴櫎session缂撳瓨

聽 聽 聽 聽 聽Ix. Flush鏂规硶

聽 聽 聽 聽 聽 聽 聽1. 鍙互寮哄埗杩涜浠庣紦瀛樺埌鏁版嵁搴撶殑鍚屾锛岄粯璁ょ殑鎯呭喌涓嬫槸commit鐨勬椂鍊欒繘琛岀紦瀛樺埌鏁版嵁搴撶殑鍚屾锛涘綋浣犺繘琛宑ommit()鐨勬椂鍊欙紝榛樿灏辫繘琛屼簡flush()

聽 聽 聽 聽 聽 聽 聽2.鍏蜂綋鍦ㄤ粈涔堟椂闂磃lush鐢眆lushMode鍐冲畾锛屾瘡涓猻ession閮藉彲浠ヨ瀹氬畠鐨刦lushMode(flush鐨勬ā寮忥級锛屾墍璋揻ushMode灏辨槸鎸囧湪浠€涔堟椂闂磋繘琛屾暟鎹簱鐨勫悓姝ワ紝flush鐨勬ā寮忚鍦═ransaction寮€濮嬬殑鏃跺€欒繘琛岃缃甧g锛歴ession.setFlushMode(FlushMode.ALWAYS)璁剧疆flush鐨勬ā寮忎负always锛屽氨鏄棤璁烘墽琛屼粈涔堣瘽閮戒細杩涜flush涓€娆★紱杩樺彲浠ヨ缃负NEVER,琛ㄧず鏃犺鎵ц浠€涔堣瘽閮戒笉杩涜鍚屾锛堜笉閲嶈锛屼簡瑙o級

6.SchemaExport浣滅敤锛氬彲浠ヨ浣犲湪绋嬪簭閲岄潰鎺у埗鐢熸垚寤鸿〃璇彞

聽 聽 聽 <property name="hbm2ddl.auto">update</property>鎴戜滑鐜板湪鍦ㄦ暟鎹簱涓缓琛ㄧ敤鐨勬槸杩欎釜閰嶇疆锛岃€屽疄闄呭伐浣滃綋涓彲浠ヤ笉鐢ㄨ繖涓厤缃紝涓嶇敤杩欎釜閰嶇疆鐨勮瘽鏁版嵁搴撹〃涓嶄細鑷姩鐢熸垚锛屾垜浠彲浠ユ墜鍔ㄧ敓鎴愶紱 鎵嬪姩寤鸿〃鏃讹紝褰撴墽琛屽埌涓嬮潰杩欐潯璇彞鏄墠寤鸿〃new 聽SchemaExport(new Configuration().configure()).create(true,true);

鍏朵腑create绗竴涓弬鏁版寚瀹氳涓嶈鍦ㄧ┖涓彴涓樉绀篸dl璇彞锛岀浜屼釜鍙傛暟鎸囧畾寤鸿〃璇彞瑕佷笉瑕佸埌鏁版嵁搴撲腑鎵ц銆傝繖鍙ヨ瘽浼氭牴鎹甴ibernate.cfg.xml涓殑

<mapping resource="com/bjsxt/hibernate/Teacher.hbm.xml"/> 聽 聽

<mapping class="com.bjsxt.hibernate.model.Student"/>鏉ュ缓绔嬭〃聽