




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Hibernate 關(guān)聯(lián)映射第二章回顧與作業(yè)點(diǎn)評Hibernate的基本原理?Hibernate的優(yōu)勢?使用Hibernate操作數(shù)據(jù)庫的步驟?實(shí)體對象的三種狀態(tài)?預(yù)習(xí)檢查如何配置單向一對多關(guān)聯(lián)關(guān)系?如何配置單向多對一關(guān)聯(lián)關(guān)系?如何配置雙向一對多關(guān)聯(lián)關(guān)系?cascade屬性和inverse屬性的作用和區(qū)別?如何配置多對多關(guān)聯(lián)關(guān)系?本章任務(wù)完善租房網(wǎng)系統(tǒng):實(shí)現(xiàn)街道和區(qū)的關(guān)聯(lián)管理實(shí)現(xiàn)租房信息的發(fā)布本章目標(biāo)掌握many-to-one關(guān)聯(lián)掌握one-to-many關(guān)聯(lián)掌握many-to-many關(guān)聯(lián)實(shí)體關(guān)聯(lián)關(guān)系實(shí)體之間的關(guān)系關(guān)聯(lián)關(guān)系通過一個對象持有另一個對象的實(shí)例泛化關(guān)系通過對象之間的繼承方法來實(shí)現(xiàn)類
2、與類之間最普遍的關(guān)系就是關(guān)聯(lián)關(guān)系在UML 語言中,關(guān)聯(lián)是有方向的單向多對一關(guān)聯(lián)在類與類之間各種各樣的關(guān)系中,多對一的單向關(guān)聯(lián)關(guān)系和關(guān)系數(shù)據(jù)庫中的外鍵參照關(guān)系最匹配單向多對一關(guān)聯(lián)是最常見的單向關(guān)聯(lián)關(guān)系在租房系統(tǒng)中從街道到區(qū)的關(guān)聯(lián)就是典型的多對一關(guān)聯(lián)租房系統(tǒng)中街道和區(qū)的實(shí)體類public class District implements java.io.Serializable private Long id; private String name; /* 默認(rèn)的構(gòu)造方法 */ public District() /省略setter/getter方法區(qū)public class Street i
3、mplements java.io.Serializable private Long id; private District district; private String name; /* 默認(rèn)的構(gòu)造方法 */ public Street() public District getDistrict() return this.district; public void setDistrict(District district) this.district = district; / 省略部分setter/getter方法街道租房系統(tǒng)中街道和區(qū)的映射文件 District.hbm.xm
4、l Street.hbm.xml與Street 對應(yīng)的street 表是通過district_id 的值關(guān)聯(lián)至district 表的設(shè)置關(guān)系的字段設(shè)置關(guān)系的對象many-to-one元素常用屬性many-to-one 元素的常用屬性屬性含義和作用必須默認(rèn)值name映射類屬性的名稱 Yclass關(guān)聯(lián)類的完全限定名Ncolumn關(guān)聯(lián)的字段Nnot-null設(shè)置關(guān)聯(lián)的字段的值是否可以為空Nfalselazy指定關(guān)聯(lián)對象是否使用延遲加載以及延遲加載的策略Nproxyfetch設(shè)置抓取數(shù)據(jù)的策略Nselect配置映射文件并測試hibernate.cfg.xml中指定映射文件測試 District dis
5、trict = new District();Street street1 = new Street();Street street2 = new Street();Street street3 = new Street();district.setName(豐臺); /設(shè)置區(qū)的名稱street1.setName(廣安路); /設(shè)置街道名稱street1.setDistrict(district); /設(shè)置街道所在區(qū)street2.setName(大紅門路);street2.setDistrict(district);street3.setName(南苑路);street3.setDistri
6、ct(district);設(shè)置街道和區(qū)SessionFactory sessionFactory = null;Session session = null;Transaction tx= null;try sessionFactory = new Configuration().configure().buildSessionFactory(); session = sessionFactory.openSession(); tx= session.beginTransaction(); session.save(district); session.save(street1); sessi
7、on.save(street2); session.save(street3); mit();catch (HibernateException e) tx.rollback(); e.printStackTrace(); finally session.close(); sessionFactory.close();添加街道和區(qū)指導(dǎo)實(shí)現(xiàn)單向多對一關(guān)聯(lián)關(guān)系訓(xùn)練要點(diǎn)Hibernate配置文件配置ORM 映射文件配置雙向一對多關(guān)聯(lián)需求說明實(shí)現(xiàn)區(qū)和街道關(guān)聯(lián)關(guān)系實(shí)現(xiàn)思路編寫實(shí)體類。在Street類中設(shè)置District屬性編寫ORM 映射文件修改Hibernate 配置文件根據(jù)需求編寫業(yè)務(wù)類和Dao類
8、,并進(jìn)行測試完成時間:15分鐘共性問題集中講解常見調(diào)試問題及解決辦法代碼規(guī)范問題共性問題集中講解單向一對多關(guān)聯(lián)由“一” 的一端加載“多” 的一端,關(guān)系由“一”的一端來維護(hù)在JavaBean中是在“一”的一端中持有“多”的一端的集合Hibernate把這種關(guān)系反映到數(shù)據(jù)庫的策略是在“多”的一端的表上加一個外鍵指向“一”的一端的表在“一”的一端維護(hù)關(guān)系是不提倡的將“多”的一端的外鍵添加非空約束,導(dǎo)致數(shù)據(jù)不能插入插入數(shù)據(jù)效率降低實(shí)體類public class Street implements java.io.Serializable private Long id; private Long di
9、strict_id; private String name; /* 默認(rèn)的構(gòu)造方法 */ public Street() / 省略部分setter/getter方法 public Long getDistrict_id() return district_id; public void setDistrict_id(Long district_id) this.district_id = district_id; 街道實(shí)體類public class District implements java.io.Serializable private Long id; private String
10、 name; private Set streets = new HashSet(); /* 默認(rèn)的構(gòu)造方法 */ public District() / 省略部分setter/getter方法 public Set getStreets() return this.streets; public void setStreets(Set streets) this.streets = streets; 區(qū)實(shí)體類映射文件 Street.hbm.xml District.hbm.xml設(shè)置關(guān)系的字段設(shè)置關(guān)系的對象使用set元素和one-to-many元素配置一對多關(guān)聯(lián)使用set元素和one-to-
11、many元素配置一對多關(guān)聯(lián)set元素的常用屬性set元素的常用屬性屬性含義和作用必須默認(rèn)值name映射類屬性的名稱 Ytable關(guān)聯(lián)類的目標(biāo)數(shù)據(jù)庫表Nlazy指定關(guān)聯(lián)對象是否使用延遲加載以及延遲加載的策略Nproxyfetch設(shè)置抓取數(shù)據(jù)的策略Nselect修改測試類檢查結(jié)果hibernate.cfg.xml中指定映射文件測試 District district = new District();Street street1 = new Street();Street street2 = new Street();Street street3 = new Street();district.s
12、etName(海淀);street1.setName(中關(guān)村大街);street2.setName(知春路);street3.setName(學(xué)院路);district.getStreets().add(street1);district.getStreets().add(street2);district.getStreets().add(street3);設(shè)置街道和區(qū)SessionFactory sessionFactory = null;Session session = null;Transaction tx= null;try sessionFactory = new Configu
13、ration().configure().buildSessionFactory(); session = sessionFactory.openSession(); tx= session.beginTransaction(); session.save(street1); session.save(street2); session.save(street3); session.save(district); mit();catch (HibernateException e) tx.rollback(); e.printStackTrace(); finally session.clos
14、e(); sessionFactory.close();添加街道和區(qū)雙向一對多關(guān)聯(lián)單向一對多單向多對一同時配置兩者就成了雙向一對多關(guān)聯(lián)指導(dǎo)實(shí)現(xiàn)雙向一對多關(guān)聯(lián)關(guān)系訓(xùn)練要點(diǎn)Hibernate配置文件的配置ORM 映射文件的配置雙向一對多關(guān)聯(lián)需求說明實(shí)現(xiàn)區(qū)和街道的關(guān)聯(lián)關(guān)系實(shí)現(xiàn)思路編寫實(shí)體類在Street類中設(shè)置District屬性在District 類中設(shè)置Set 屬性用于保存包含的Street編寫ORM 映射文件修改Hibernate 配置文件根據(jù)需求編寫業(yè)務(wù)類和Dao類,并進(jìn)行測試完成時間:30分鐘共性問題集中講解常見調(diào)試問題及解決辦法代碼規(guī)范問題共性問題集中講解小結(jié)如何配置單向一對多關(guān)聯(lián)關(guān)系?
15、如何配置單向多對一關(guān)聯(lián)關(guān)系?如何配置雙向一對多關(guān)聯(lián)關(guān)系?cascade屬性當(dāng)設(shè)置了cascade屬性不為none時,Hibernate 會自動持久化所關(guān)聯(lián)的對象cascade 屬性的設(shè)置會帶來性能上的變動,需謹(jǐn)慎設(shè)置Cascade屬性值屬性值含義和作用all對所有操作進(jìn)行級聯(lián)操作save-update執(zhí)行保存和更新操作時進(jìn)行級聯(lián)操作delete執(zhí)行刪除操作時進(jìn)行級聯(lián)操作none對所有操作不進(jìn)行級聯(lián)操作inverse屬性術(shù)語“inverse”直譯為“反轉(zhuǎn)”在Hibernate 中,inverse屬性指定了關(guān)聯(lián)關(guān)系中的方向關(guān)聯(lián)關(guān)系中,inverse=false 的為主動方,由主動方負(fù)責(zé)維護(hù)關(guān)聯(lián)關(guān)系
16、在一對多關(guān)聯(lián)中,將one 方的inverse 設(shè)置為true,這將有助性能的改善inverse指的是關(guān)聯(lián)關(guān)系的控制方向,而cascade指的是層級之間的連鎖操作練習(xí)cascade和inverse的使用訓(xùn)練要點(diǎn)cascade屬性的使用inverse屬性的使用需求說明使用cascade和inverse 優(yōu)化區(qū)和街道關(guān)聯(lián)關(guān)系完成時間:20分鐘共性問題集中講解常見調(diào)試問題及解決辦法代碼規(guī)范問題共性問題集中講解多對多關(guān)聯(lián)案例分析2-1某OA系統(tǒng)需要完成的功能列出項(xiàng)目的參加人員列出某個人參加的所有項(xiàng)目多對多關(guān)聯(lián)案例分析2-2對雇員和項(xiàng)目需要創(chuàng)建兩個表:employee 和project雇員和項(xiàng)目間是典型的多對多關(guān)系多對多關(guān)聯(lián) Project 一方的配置Employee 一方的配置練習(xí)實(shí)現(xiàn)租房信息的發(fā)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇南京秦淮中學(xué)2024~2025學(xué)年高二下冊期末調(diào)研數(shù)學(xué)試題學(xué)生卷
- 江蘇常州高級中學(xué)2024~2025學(xué)年高一下冊期末質(zhì)量檢查數(shù)學(xué)試題學(xué)生卷
- 2024~2025學(xué)年山東泰安新泰七年級下冊4月期中數(shù)學(xué)試題【帶答案】
- 過敏原特異性免疫治療研究考核試卷
- 災(zāi)害影響下的公共設(shè)施應(yīng)急恢復(fù)計劃考核試卷
- 醫(yī)藥研發(fā)外包服務(wù)市場分析考核試卷
- 部編道德與法治三年級下冊教案
- 2025年中國PET薄膜帶數(shù)據(jù)監(jiān)測報告
- 2025年中國DVD沖壓件數(shù)據(jù)監(jiān)測研究報告
- 2025年中國6-16防區(qū)擴(kuò)展防盜報警系統(tǒng)數(shù)據(jù)監(jiān)測報告
- 2025至2030中國礦用卡車行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 氟骨癥課件教學(xué)課件
- 腳手架知識試題集及答案
- 宣城宣州區(qū)“政聘企培”人才引進(jìn)筆試真題2024
- 成都東方廣益投資有限公司下屬企業(yè)招聘筆試真題2024
- 中國鄉(xiāng)村建設(shè)運(yùn)動課件
- 2025至2030年中國高純氮化硅行業(yè)市場全景評估及發(fā)展策略分析報告
- 2024年四川省高校畢業(yè)生“三支一扶”計劃真題
- 2025年農(nóng)作物種植與管理專業(yè)考試試題及答案
- JG/T 302-2011卷簾門窗
- 小酒館合伙人合作協(xié)議書
評論
0/150
提交評論