




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、多對(duì)多的實(shí)體映射實(shí)現(xiàn)多對(duì)多的實(shí)體映射實(shí)現(xiàn)楊少波楊少波中科院計(jì)算所職業(yè)培訓(xùn)中心中科院計(jì)算所職業(yè)培訓(xùn)中心 多對(duì)多的實(shí)體映射實(shí)現(xiàn)多對(duì)多的實(shí)體映射實(shí)現(xiàn)在本講您能了解如下知識(shí)點(diǎn)在本講您能了解如下知識(shí)點(diǎn)q創(chuàng)建創(chuàng)建HibernateHibernate的配置文件。的配置文件。q創(chuàng)建持久化類(lèi)。創(chuàng)建持久化類(lèi)。q創(chuàng)建對(duì)象創(chuàng)建對(duì)象- -關(guān)系映射文件。關(guān)系映射文件。q編程基于編程基于HibernateHibernate的的DAODAO組件組件q實(shí)現(xiàn)實(shí)現(xiàn)“多對(duì)多多對(duì)多”的關(guān)聯(lián)映射的關(guān)聯(lián)映射1 1、多對(duì)多關(guān)聯(lián)的實(shí)現(xiàn)方案、多對(duì)多關(guān)聯(lián)的實(shí)現(xiàn)方案(1 1)類(lèi)似一對(duì)多情形中的最常用方案,為關(guān)聯(lián)的雙方增加)類(lèi)似一對(duì)多情形中的最常用方
2、案,為關(guān)聯(lián)的雙方增加到對(duì)方的外鍵到對(duì)方的外鍵 操作比較簡(jiǎn)單,缺點(diǎn)是會(huì)造成數(shù)據(jù)冗余;操作比較簡(jiǎn)單,缺點(diǎn)是會(huì)造成數(shù)據(jù)冗余;一、實(shí)現(xiàn)一、實(shí)現(xiàn)“多對(duì)多多對(duì)多”的關(guān)聯(lián)映射的原理的關(guān)聯(lián)映射的原理(2 2)新增一張包含關(guān)聯(lián)雙方主鍵的關(guān)聯(lián)表)新增一張包含關(guān)聯(lián)雙方主鍵的關(guān)聯(lián)表 在取數(shù)據(jù)時(shí),需要鏈接該關(guān)聯(lián)表和數(shù)據(jù)表,優(yōu)點(diǎn)是沒(méi)有在取數(shù)據(jù)時(shí),需要鏈接該關(guān)聯(lián)表和數(shù)據(jù)表,優(yōu)點(diǎn)是沒(méi)有數(shù)據(jù)冗余,缺點(diǎn)是帶來(lái)了一定的時(shí)限復(fù)雜度。數(shù)據(jù)冗余,缺點(diǎn)是帶來(lái)了一定的時(shí)限復(fù)雜度。2 2、注意的問(wèn)題、注意的問(wèn)題(1 1)“多對(duì)多多對(duì)多”由于使用了中間數(shù)據(jù)庫(kù)表,在查詢(xún)效率方面比由于使用了中間數(shù)據(jù)庫(kù)表,在查詢(xún)效率方面比較低較低(2 2)并且在對(duì)象
3、模式上,)并且在對(duì)象模式上,“多對(duì)多多對(duì)多”會(huì)使得對(duì)象與對(duì)象之間彼會(huì)使得對(duì)象與對(duì)象之間彼此依賴(lài),因此該種設(shè)計(jì)并不是一個(gè)良好的設(shè)計(jì)方式此依賴(lài),因此該種設(shè)計(jì)并不是一個(gè)良好的設(shè)計(jì)方式(3 3)我們?cè)谙到y(tǒng)的數(shù)據(jù)訪問(wèn)層的設(shè)計(jì)上應(yīng)盡可能避免使用)我們?cè)谙到y(tǒng)的數(shù)據(jù)訪問(wèn)層的設(shè)計(jì)上應(yīng)盡可能避免使用“多多對(duì)多對(duì)多”關(guān)系。關(guān)系。3 3、多對(duì)多的關(guān)聯(lián)也同樣可以采用、多對(duì)多的關(guān)聯(lián)也同樣可以采用SetSet、ListList等多種方式的等多種方式的屬性標(biāo)簽屬性標(biāo)簽4 4、基于中間連接表的多對(duì)多關(guān)聯(lián)的映射文件的示例、基于中間連接表的多對(duì)多關(guān)聯(lián)的映射文件的示例 注意注意標(biāo)簽的定義標(biāo)簽的定義 中間連接表中間連接表1 1、設(shè)計(jì)本
4、示例中所需要的數(shù)據(jù)庫(kù)、設(shè)計(jì)本示例中所需要的數(shù)據(jù)庫(kù)2 2、利用、利用HibernateHibernate連接數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)(1 1)方式一:采用直接連接)方式一:采用直接連接(2 2)方式二:采用基于容器的)方式二:采用基于容器的JNDIJNDI數(shù)據(jù)源數(shù)據(jù)源 本例采用本例采用TomcatTomcat中所提供的中所提供的JNDIJNDI的數(shù)據(jù)庫(kù)連接池的數(shù)據(jù)庫(kù)連接池二、在二、在WebWeb應(yīng)用中實(shí)現(xiàn)數(shù)據(jù)庫(kù)訪問(wèn)應(yīng)用中實(shí)現(xiàn)數(shù)據(jù)庫(kù)訪問(wèn)4 4、將、將HibernateHibernate的的庫(kù)文件放到庫(kù)文件放到WebWeb應(yīng)用的應(yīng)用的/WEB-/WEB-INF/libINF/lib目錄目錄中中3 3、在、在
5、TomcatTomcat的的server.xmlserver.xml文件進(jìn)行配文件進(jìn)行配置置5 5、配置、配置HibernateHibernate系統(tǒng)系統(tǒng) 本例的本例的XMLXML格式的格式的HibernateHibernate配置文件配置文件hibernate.cfg.xmlhibernate.cfg.xml文文件的內(nèi)容如下件的內(nèi)容如下6 6、配置、配置perties屬性文件屬性文件7 7、在、在WebWeb應(yīng)用所在的目錄中添加應(yīng)用所在的目錄中添加數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)的JDBCJDBC驅(qū)動(dòng)程序的各個(gè)驅(qū)動(dòng)程序的各個(gè)* *.jar.jar包文件包文件8
6、 8、編寫(xiě)、編寫(xiě)POJOPOJO類(lèi)及其要求類(lèi)及其要求(1 1)POJOPOJOp簡(jiǎn)單傳統(tǒng)簡(jiǎn)單傳統(tǒng)JavaJava對(duì)象(對(duì)象(POJO-Plain Old Java ObjectPOJO-Plain Old Java Object,有時(shí)候也稱(chēng)作有時(shí)候也稱(chēng)作Plain Ordinary Java ObjectsPlain Ordinary Java Objects)編程模型)編程模型pHibernateHibernate使用簡(jiǎn)單的使用簡(jiǎn)單的JavaJava對(duì)象來(lái)進(jìn)行持久化。對(duì)象來(lái)進(jìn)行持久化。 (2 2)POJOPOJO類(lèi)代碼的風(fēng)格要求類(lèi)代碼的風(fēng)格要求p一個(gè)一個(gè)POJOPOJO很類(lèi)似于很類(lèi)似于Jav
7、aBeanJavaBean的代碼風(fēng)格的代碼風(fēng)格p并且它應(yīng)該有一個(gè)沒(méi)有參數(shù)的構(gòu)造函數(shù)并且它應(yīng)該有一個(gè)沒(méi)有參數(shù)的構(gòu)造函數(shù)(3 3)實(shí)體類(lèi)中的標(biāo)識(shí)屬性)實(shí)體類(lèi)中的標(biāo)識(shí)屬性 idp實(shí)體類(lèi)中的實(shí)體類(lèi)中的id id 屬性(屬性(propertyproperty) 為一個(gè)實(shí)體類(lèi)的實(shí)例提為一個(gè)實(shí)體類(lèi)的實(shí)例提供標(biāo)識(shí)屬性(供標(biāo)識(shí)屬性(identifier propertyidentifier property)的值)的值p它是一個(gè)特殊的屬性,代表了這個(gè)類(lèi)的數(shù)據(jù)庫(kù)標(biāo)識(shí)符(主它是一個(gè)特殊的屬性,代表了這個(gè)類(lèi)的數(shù)據(jù)庫(kù)標(biāo)識(shí)符(主鍵)鍵)(4 4)本例中的實(shí)體類(lèi)代碼)本例中的實(shí)體類(lèi)代碼(5 5)實(shí)體類(lèi)中的)實(shí)體類(lèi)中的equ
8、alsequals方法方法如果我們有如下需求,則必須重載如果我們有如下需求,則必須重載 equals()equals()方法:方法: p想把持久類(lèi)的實(shí)例放入想把持久類(lèi)的實(shí)例放入SetSet中(當(dāng)中(當(dāng)表示多值關(guān)聯(lián)時(shí),推薦這么做)表示多值關(guān)聯(lián)時(shí),推薦這么做) p想重用脫管實(shí)例想重用脫管實(shí)例 p實(shí)現(xiàn)實(shí)現(xiàn)equals()equals()最顯而易見(jiàn)的方法最顯而易見(jiàn)的方法是比較兩個(gè)對(duì)象標(biāo)識(shí)符的值。如是比較兩個(gè)對(duì)象標(biāo)識(shí)符的值。如果值相同,則兩個(gè)對(duì)象對(duì)應(yīng)于數(shù)果值相同,則兩個(gè)對(duì)象對(duì)應(yīng)于數(shù)據(jù)庫(kù)的同一行,因此它們是相等據(jù)庫(kù)的同一行,因此它們是相等的(如果都被添加到的(如果都被添加到 SetSet,則在,則在Set
9、Set中只有一個(gè)元素)。中只有一個(gè)元素)。 9 9、映射前面所設(shè)計(jì)的、映射前面所設(shè)計(jì)的BookBook數(shù)據(jù)庫(kù)表數(shù)據(jù)庫(kù)表(1 1)映射文件的作用)映射文件的作用pHibernateHibernate需要知道怎樣去加載(需要知道怎樣去加載(loadload)和存儲(chǔ)()和存儲(chǔ)(storestore)我們的持久化類(lèi)的對(duì)象。這里正是我們的持久化類(lèi)的對(duì)象。這里正是HibernateHibernate映射文件映射文件(mapping filemapping file)發(fā)揮作用的地方)發(fā)揮作用的地方p映射文件告訴映射文件告訴HibernateHibernate它應(yīng)該訪問(wèn)數(shù)據(jù)庫(kù)里面的哪個(gè)表它應(yīng)該訪問(wèn)數(shù)據(jù)庫(kù)里面的
10、哪個(gè)表(tabletable)和應(yīng)該使用表里面的哪些字段()和應(yīng)該使用表里面的哪些字段(columncolumn)。)。(2 2)命名規(guī)則:類(lèi)名)命名規(guī)則:類(lèi)名.hbm.xml.hbm.xml(3 3)本示例中的)本示例中的Book.hbm.xmlBook.hbm.xml映射文件的內(nèi)容映射文件的內(nèi)容 1010、編程基于、編程基于HibernateHibernate的的DAODAO組組件以進(jìn)行數(shù)據(jù)的訪件以進(jìn)行數(shù)據(jù)的訪問(wèn)操作問(wèn)操作1111、在某個(gè)、在某個(gè)WebWeb應(yīng)應(yīng)用中使用上面的用中使用上面的程序程序1212、執(zhí)行該、執(zhí)行該WebWeb應(yīng)用應(yīng)用(1 1)將在瀏覽器中看到下面的執(zhí)行結(jié)果)將在瀏覽
11、器中看到下面的執(zhí)行結(jié)果(2 2)同時(shí),在數(shù)據(jù)庫(kù)表中將出現(xiàn)下面的記錄)同時(shí),在數(shù)據(jù)庫(kù)表中將出現(xiàn)下面的記錄三、實(shí)現(xiàn)本例中的三、實(shí)現(xiàn)本例中的“多對(duì)多多對(duì)多”實(shí)體之間的關(guān)聯(lián)實(shí)體之間的關(guān)聯(lián)1 1、在、在MS SQLServerMS SQLServer的本例的數(shù)據(jù)庫(kù)中增加一個(gè)數(shù)據(jù)庫(kù)表的本例的數(shù)據(jù)庫(kù)中增加一個(gè)數(shù)據(jù)庫(kù)表BookAuthorBookAuthor2 2、決定、決定BookAuthorBookAuthor和和BookBook之間的關(guān)系之間的關(guān)系3 3、新增一個(gè)、新增一個(gè)BookAuthorBookAuthor類(lèi)類(lèi) 并且在并且在BookAuthorBookAuthor類(lèi)增加一組類(lèi)增加一組BookBoo
12、k,這樣我們可以輕松的,這樣我們可以輕松的通過(guò)調(diào)用通過(guò)調(diào)用aPerson.getBooks() aPerson.getBooks() 得到一個(gè)得到一個(gè)BookAuthorBookAuthor所擁有的所擁有的BookBook列表,而不必執(zhí)行一個(gè)顯式的查詢(xún)(一個(gè)單向的列表,而不必執(zhí)行一個(gè)顯式的查詢(xún)(一個(gè)單向的Set-basedSet-based關(guān)聯(lián))。關(guān)聯(lián))。 4 4、為該實(shí)體類(lèi)創(chuàng)建一個(gè)、為該實(shí)體類(lèi)創(chuàng)建一個(gè)BookAuthor.hbm.xmlBookAuthor.hbm.xml映射文件映射文件 6 6、在、在HibernateDAOBean.javaHibernateDAOBean.java中增加一個(gè)產(chǎn)生關(guān)聯(lián)數(shù)據(jù)的中增加一個(gè)產(chǎn)生關(guān)聯(lián)數(shù)據(jù)的方法方法5 5、在、在hibernate.cfg.xmlhibernate.cfg.xml配置文件中增加對(duì)配置文件中增加對(duì)該文件的定義該文件的定義7 7、在、在WebWeb應(yīng)用的組件中添加下面的代碼應(yīng)用的組件中添加下面的代碼 8 8、執(zhí)行該組件、執(zhí)行該組件9 9、在、在HibernateDAOBean.javaHi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京科技大學(xué)《學(xué)科整合理論與實(shí)踐》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院《廣播電視前沿》2023-2024學(xué)年第二學(xué)期期末試卷
- 寧波大學(xué)《江南古鎮(zhèn)與水鄉(xiāng)文化》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇農(nóng)林職業(yè)技術(shù)學(xué)院《商務(wù)基礎(chǔ)與專(zhuān)業(yè)導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 阜陽(yáng)師范大學(xué)信息工程學(xué)院《智能控制理論及仿真》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京工業(yè)大學(xué)耿丹學(xué)院《木材商品學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 甘孜職業(yè)學(xué)院《口腔醫(yī)學(xué)美學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 運(yùn)城職業(yè)技術(shù)大學(xué)《工程地質(zhì)學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 室內(nèi)設(shè)計(jì)招標(biāo)方案
- 2024年抗肝片吸蟲(chóng)病藥項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 年級(jí)組長(zhǎng)管理經(jīng)驗(yàn)交流課件
- 碎屑巖巖石薄片鑒定(共51張PPT)
- 網(wǎng)絡(luò)工程報(bào)價(jià)清單
- 瀝青路面損壞調(diào)查表(帶公式自動(dòng)計(jì)算)
- 審計(jì)資料交接清單
- 勞動(dòng)仲裁證據(jù)材料目錄清單范本
- 應(yīng)用電化學(xué)習(xí)題及答案
- 突發(fā)環(huán)境事件應(yīng)急預(yù)案回顧性評(píng)估報(bào)告
- 《推銷(xiāo)實(shí)務(wù)》課程標(biāo)準(zhǔn)
- 場(chǎng)區(qū)35kV集電線路電纜敷設(shè)工程監(jiān)理實(shí)施細(xì)則
- 輪胎檢查微課市公開(kāi)課一等獎(jiǎng)?wù)n件省賽課獲獎(jiǎng)?wù)n件
評(píng)論
0/150
提交評(píng)論