教學電子課件使用hibernate開發(fā)租房系統(tǒng)_第1頁
教學電子課件使用hibernate開發(fā)租房系統(tǒng)_第2頁
教學電子課件使用hibernate開發(fā)租房系統(tǒng)_第3頁
教學電子課件使用hibernate開發(fā)租房系統(tǒng)_第4頁
教學電子課件使用hibernate開發(fā)租房系統(tǒng)_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Hibernate 關聯(lián)映射第二章回顧與作業(yè)點評Hibernate的基本原理?Hibernate的優(yōu)勢?使用Hibernate操作數據庫的步驟?實體對象的三種狀態(tài)?預習檢查如何配置單向一對多關聯(lián)關系?如何配置單向多對一關聯(lián)關系?如何配置雙向一對多關聯(lián)關系?cascade屬性和inverse屬性的作用和區(qū)別?如何配置多對多關聯(lián)關系?本章任務完善租房網系統(tǒng):實現(xiàn)街道和區(qū)的關聯(lián)管理實現(xiàn)租房信息的發(fā)布本章目標掌握many-to-one關聯(lián)掌握one-to-many關聯(lián)掌握many-to-many關聯(lián)實體關聯(lián)關系實體之間的關系關聯(lián)關系通過一個對象持有另一個對象的實例泛化關系通過對象之間的繼承方法來實現(xiàn)類

2、與類之間最普遍的關系就是關聯(lián)關系在UML 語言中,關聯(lián)是有方向的單向多對一關聯(lián)在類與類之間各種各樣的關系中,多對一的單向關聯(lián)關系和關系數據庫中的外鍵參照關系最匹配單向多對一關聯(lián)是最常見的單向關聯(lián)關系在租房系統(tǒng)中從街道到區(qū)的關聯(lián)就是典型的多對一關聯(lián)租房系統(tǒng)中街道和區(qū)的實體類public class District implements java.io.Serializable private Long id; private String name; /* 默認的構造方法 */ public District() /省略setter/getter方法區(qū)public class Street i

3、mplements java.io.Serializable private Long id; private District district; private String name; /* 默認的構造方法 */ 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 對應的street 表是通過district_id 的值關聯(lián)至district 表的設置關系的字段設置關系的對象many-to-one元素常用屬性many-to-one 元素的常用屬性屬性含義和作用必須默認值name映射類屬性的名稱 Yclass關聯(lián)類的完全限定名Ncolumn關聯(lián)的字段Nnot-null設置關聯(lián)的字段的值是否可以為空Nfalselazy指定關聯(lián)對象是否使用延遲加載以及延遲加載的策略Nproxyfetch設置抓取數據的策略Nselect配置映射文件并測試hibernate.cfg.xml中指定映射文件測試 District dis

5、trict = new District();Street street1 = new Street();Street street2 = new Street();Street street3 = new Street();district.setName(豐臺); /設置區(qū)的名稱street1.setName(廣安路); /設置街道名稱street1.setDistrict(district); /設置街道所在區(qū)street2.setName(大紅門路);street2.setDistrict(district);street3.setName(南苑路);street3.setDistri

6、ct(district);設置街道和區(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ū)指導實現(xiàn)單向多對一關聯(lián)關系訓練要點Hibernate配置文件配置ORM 映射文件配置雙向一對多關聯(lián)需求說明實現(xiàn)區(qū)和街道關聯(lián)關系實現(xiàn)思路編寫實體類。在Street類中設置District屬性編寫ORM 映射文件修改Hibernate 配置文件根據需求編寫業(yè)務類和Dao類

8、,并進行測試完成時間:15分鐘共性問題集中講解常見調試問題及解決辦法代碼規(guī)范問題共性問題集中講解單向一對多關聯(lián)由“一” 的一端加載“多” 的一端,關系由“一”的一端來維護在JavaBean中是在“一”的一端中持有“多”的一端的集合Hibernate把這種關系反映到數據庫的策略是在“多”的一端的表上加一個外鍵指向“一”的一端的表在“一”的一端維護關系是不提倡的將“多”的一端的外鍵添加非空約束,導致數據不能插入插入數據效率降低實體類public class Street implements java.io.Serializable private Long id; private Long di

9、strict_id; private String name; /* 默認的構造方法 */ public Street() / 省略部分setter/getter方法 public Long getDistrict_id() return district_id; public void setDistrict_id(Long district_id) this.district_id = district_id; 街道實體類public class District implements java.io.Serializable private Long id; private String

10、 name; private Set streets = new HashSet(); /* 默認的構造方法 */ public District() / 省略部分setter/getter方法 public Set getStreets() return this.streets; public void setStreets(Set streets) this.streets = streets; 區(qū)實體類映射文件 Street.hbm.xml District.hbm.xml設置關系的字段設置關系的對象使用set元素和one-to-many元素配置一對多關聯(lián)使用set元素和one-to-

11、many元素配置一對多關聯(lián)set元素的常用屬性set元素的常用屬性屬性含義和作用必須默認值name映射類屬性的名稱 Ytable關聯(lián)類的目標數據庫表Nlazy指定關聯(lián)對象是否使用延遲加載以及延遲加載的策略Nproxyfetch設置抓取數據的策略Nselect修改測試類檢查結果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(中關村大街);street2.setName(知春路);street3.setName(學院路);district.getStreets().add(street1);district.getStreets().add(street2);district.getStreets().add(street3);設置街道和區(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ū)雙向一對多關聯(lián)單向一對多單向多對一同時配置兩者就成了雙向一對多關聯(lián)指導實現(xiàn)雙向一對多關聯(lián)關系訓練要點Hibernate配置文件的配置ORM 映射文件的配置雙向一對多關聯(lián)需求說明實現(xiàn)區(qū)和街道的關聯(lián)關系實現(xiàn)思路編寫實體類在Street類中設置District屬性在District 類中設置Set 屬性用于保存包含的Street編寫ORM 映射文件修改Hibernate 配置文件根據需求編寫業(yè)務類和Dao類,并進行測試完成時間:30分鐘共性問題集中講解常見調試問題及解決辦法代碼規(guī)范問題共性問題集中講解小結如何配置單向一對多關聯(lián)關系?

15、如何配置單向多對一關聯(lián)關系?如何配置雙向一對多關聯(lián)關系?cascade屬性當設置了cascade屬性不為none時,Hibernate 會自動持久化所關聯(lián)的對象cascade 屬性的設置會帶來性能上的變動,需謹慎設置Cascade屬性值屬性值含義和作用all對所有操作進行級聯(lián)操作save-update執(zhí)行保存和更新操作時進行級聯(lián)操作delete執(zhí)行刪除操作時進行級聯(lián)操作none對所有操作不進行級聯(lián)操作inverse屬性術語“inverse”直譯為“反轉”在Hibernate 中,inverse屬性指定了關聯(lián)關系中的方向關聯(lián)關系中,inverse=false 的為主動方,由主動方負責維護關聯(lián)關系

16、在一對多關聯(lián)中,將one 方的inverse 設置為true,這將有助性能的改善inverse指的是關聯(lián)關系的控制方向,而cascade指的是層級之間的連鎖操作練習cascade和inverse的使用訓練要點cascade屬性的使用inverse屬性的使用需求說明使用cascade和inverse 優(yōu)化區(qū)和街道關聯(lián)關系完成時間:20分鐘共性問題集中講解常見調試問題及解決辦法代碼規(guī)范問題共性問題集中講解多對多關聯(lián)案例分析2-1某OA系統(tǒng)需要完成的功能列出項目的參加人員列出某個人參加的所有項目多對多關聯(lián)案例分析2-2對雇員和項目需要創(chuàng)建兩個表:employee 和project雇員和項目間是典型的多對多關系多對多關聯(lián) Project 一方的配置Employee 一方的配置練習實現(xiàn)租房信息的發(fā)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論