版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、基于Java EE的高級程序設(shè)計實驗指導手冊實驗六:Hibernate關(guān)系映射實驗名稱Hibernate關(guān)系映射實驗步驟一、一對一共享主鍵方式的關(guān)系映射1. 創(chuàng)建Java project,命名為 lab62. 建立數(shù)據(jù)庫及表結(jié)構(gòu)(特別注意:在創(chuàng)建數(shù)據(jù)庫時選擇字符集,例如為gbk,校對規(guī)則為gbk_chinese_ci。否則不能顯示中文字符)登錄表:login列名描述數(shù)據(jù)類型可空默認值說明IDID號int(4)否無主鍵USERNAME登錄賬號varchar(20)是無PASSWORD登錄密碼varchar(20)是無用戶詳細信息表:detail列名描述數(shù)據(jù)類型可空默認值說明IDID號int(4)
2、否無主鍵,自增TRUENAME真實姓名varchar(8)是無EMAIL電子郵件varchar(50)是無3在MyEclipse中創(chuàng)建對MySQL的連接1)切換到“MyEclipse Database Explorer”視圖,新建MySQL數(shù)據(jù)庫連接驅(qū)動。啟動MyEclipse,選擇【W(wǎng)indow】【Open Perspective】【MyEclipse Database Explorer】菜單項,打開MyEclipse Database瀏覽器,右擊菜單,如下圖所示,選擇【New】菜單項,出現(xiàn)如圖所示的對話框,編輯數(shù)據(jù)庫連接驅(qū)動。Driver template:MySQL Connector/
3、JDriver name:com.mysql.jdbc.Driver(在url中添加characterEncoding參數(shù),否則在數(shù)據(jù)庫中不能顯示中文)Connection URL:jdbc:mysql:/localhost:3306/javaee?characterEncoding=gbk注:javaee要修改成你所使用的數(shù)據(jù)庫名稱User name:rootPassword:JDBC驅(qū)動存放位置:c盤lib文件夾下2)測試連接:在MyEclipse Database瀏覽器中,右擊剛才創(chuàng)建的MyConn數(shù)據(jù)庫連接,選擇“Open connection”菜單項,打開名為“MyConn”的數(shù)據(jù)連
4、接,如圖所示: 4. 添加Hibernate開發(fā)能力右擊項目名lab6,選擇【MyEclipse】【Add Hibernate Capabilites】菜單項,出現(xiàn)如下圖所示的對話框,選擇Hibernate框架應用版本及所需要的類庫。單擊【Next】按鈕,進入如下圖所示界面。創(chuàng)建Hibernate配置文件hibernate.cfg.xml,將該文件放在src文件夾下,后面會詳細介紹該文件內(nèi)容。這里先說明添加Hibernate開發(fā)功能的步驟。單擊【Next】按鈕,進入如下圖所示界面,指定Hibernate數(shù)據(jù)庫連接細節(jié)。由于在前面已經(jīng)配置一個名為MyConn的數(shù)據(jù)庫連接,所以這里只需要選擇DB
5、Driver為“MyConn”即可。單擊【Next】按鈕,出現(xiàn)如下圖所示界面。Hibernate中有一個與數(shù)據(jù)庫打交道重要的類Session。而這個類是由工廠SessionFactory創(chuàng)建的。這個界面詢問是否需要創(chuàng)建SessionFactory類。如果需要創(chuàng)建,還需要指定創(chuàng)建的位置和類名。這些接口都會在后面詳細介紹。單擊【Finish】按鈕,完成Hibernate的配置。5. 生成數(shù)據(jù)庫表對應的Java類對象和映射文件在MyEclispse下創(chuàng)建一個名為“org.model”的包,這個包將用來存放與數(shù)據(jù)庫表對應的Java類POJO。打開MyEclipse Database Explorer視
6、圖。打開前面創(chuàng)建的MyConn數(shù)據(jù)連接,選擇【XSCJ】【TABLE】菜單項,右擊相應表(登錄表和用戶信息表),選擇【Hibernate Reverse Engineering】菜單項,如下圖所示,將啟動Hibernate Reverse Engineering向?qū)В撓驅(qū)в糜谕瓿蓮囊延械臄?shù)據(jù)庫表生成對應的Java類和相關(guān)映像文件的配置工作。首先,選擇生成的Java類和映像文件所在的位置,如圖所示。單擊【Next】按鈕,進入如圖所示的界面,選擇主鍵生成策略。 下面列舉需要修改的代碼,修改后的代碼如下。Detail.javapackage org.model;public class Detai
7、l private String email; private Login login; / 省略getter和setter方法及構(gòu)造函數(shù)(反向工程自動生成的構(gòu)造函數(shù)必須有否則操作數(shù)據(jù)庫會報錯)Login.javapackage org.model;public class Login private String password; private Detail detail; / 省略getter和setter方法及構(gòu)造函數(shù)Login.hbm.xml detail Detail.hbm.xml 注意:檢查一下在hibernate.cfg.xml文件中是否已加入配置映射文件的語句6. 測試類
8、Test.javaTest.java:/此處省略main方法Session session=HibernateSessionFactory.getSession();Transaction ts=session.beginTransaction(); / 創(chuàng)建事務對象Detail detail=new Detail();Login login=new Login();login.setUsername(yanhong);login.setPassword(123);detail.setTruename(嚴紅);detail.setEmail(yanhong);login.setDetail(d
9、etail);detail.setLogin(login);session.save(detail);mit();HibernateSessionFactory.closeSession(); 二、多對多的關(guān)系映射1.建立數(shù)據(jù)庫及表結(jié)構(gòu)學生表:student列名描述數(shù)據(jù)類型可空默認值說明IDID號int否無主鍵SNUMBER學號varchar(10)是無SNAME姓名varchar(10)SAGE年齡int是無課程表:course列名描述數(shù)據(jù)類型可空默認值說明ID ID號int 否無主鍵CNUMBER 課程號varchar(10) 是無CNAME 課程名varchar(20) 是無學生選課表(
10、連接表):stu_cour列名描述數(shù)據(jù)類型可空默認值說明SID 學生ID號int 否無主鍵CID 課程ID號int 否無主鍵3生成數(shù)據(jù)庫表對應的Java類對象和映射文件在MyEclispse下創(chuàng)建一個名為“org.model”的包,這個包將用來存放與數(shù)據(jù)庫表對應的Java類POJO。打開MyEclipse Database Explorer視圖。打開前面創(chuàng)建的MyConn數(shù)據(jù)連接,選擇【XSCJ】【TABLE】菜單項,右擊相應表(學生表和課程信息表),選擇【Hibernate Reverse Engineering】菜單項,如下圖所示,將啟動Hibernate Reverse Engineer
11、ing向?qū)В撓驅(qū)в糜谕瓿蓮囊延械臄?shù)據(jù)庫表生成對應的Java類和相關(guān)映像文件的配置工作。首先,選擇生成的Java類和映像文件所在的位置,如圖所示。單擊【Next】按鈕,進入如圖所示的界面,選擇主鍵生成策略。 下面列舉需要修改的代碼,修改后的代碼如下。Student.javapackage org.model;import java.util.HashSet;import java.util.Set;public class Student implements java.io.Serializable private int sage; private Set courses=new Hash
12、Set(); /省略上述各屬性的getter和setter方法及構(gòu)造函數(shù)(反向工程自動生成的構(gòu)造函數(shù)必須有否則操作數(shù)據(jù)庫會報錯)Course.javapackage org.model;import java.util.HashSet;import java.util.Set;public class Course implements java.io.Serializable private String cname; private Set stus=new HashSet(); /省略上述各屬性的getter和setter方法Student.hbm.xml Course.hbm.xml
13、注意:檢查一下在hibernate.cfg.xml文件中是否已加入配置映射文件的語句6. 測試類Test.javaTest.java:/此處省略main方法Session session=HibernateSessionFactory.getSession();Transaction ts=session.beginTransaction(); / 創(chuàng)建事務對象Course cour1=new Course();Course cour2=new Course();Course cour3=new Course();cour1.setCnumber(101);cour1.setCname(計算機基礎(chǔ));cour2.setCnumber(102);cour2.setCname(數(shù)據(jù)庫原理);cour3.setCnumber(103);cour3.setCname(計算機原理);Set courses=new HashSet();courses.add(cour1);courses.add(cour2);courses.add(cour
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版棉花產(chǎn)業(yè)投資基金管理合同4篇
- 二零二五版木材加工廢棄物處理與回收利用合同4篇
- 2025年鏟車駕駛員安全操作與事故預防服務合同3篇
- 報關(guān)出口合同(2篇)
- 個人貨車運輸租賃合同范本(2024版)
- 2025年度新型環(huán)保瓷磚銷售合同3篇
- 二零二五年度出口貿(mào)易合同履行監(jiān)督合同范本4篇
- 2025版民辦培訓機構(gòu)教務管理人員合同3篇
- 2025年度金融行業(yè)客戶服務個人勞務派遣合同范本2篇
- 2025年度個人住房維修基金借款合同模板7篇
- 湖北省十堰市城區(qū)2024-2025學年九年級上學期期末質(zhì)量檢測綜合物理試題(含答案)
- 2024企業(yè)答謝晚宴會務合同3篇
- 電氣工程及其自動化專業(yè)《畢業(yè)設(shè)計(論文)及答辯》教學大綱
- 《客艙安全管理與應急處置》課件-第14講 應急撤離
- 中華人民共和國文物保護法
- 節(jié)前物業(yè)安全培訓
- 阿里巴巴國際站:2024年珠寶眼鏡手表及配飾行業(yè)報告
- 高甘油三酯血癥相關(guān)的器官損傷
- 手術(shù)室護士考試題及答案
- 牙膏項目創(chuàng)業(yè)計劃書
- 單位食堂供餐方案
評論
0/150
提交評論