資源描述:
《JavaEE基礎(chǔ)應(yīng)用教程之Hibernate應(yīng)用》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第4章Hibernate應(yīng)用4.1Hibernate概述4.2Hibernate應(yīng)用基礎(chǔ)4.3Hibernate關(guān)系映射4.4Hibernate高級功能4.5Hibernate與Struts2整合應(yīng)用4.1Hibernate概述1.ORM簡介對象/關(guān)系映射ORM(Object-RelationMapping)是用于將對象與對象之間的關(guān)系對應(yīng)到數(shù)據(jù)庫表與表之間的關(guān)系的一種模式。簡單地說,ORM是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),將Java程序中的對象自動持久化到關(guān)系數(shù)據(jù)庫中。對象和關(guān)系數(shù)據(jù)是業(yè)務(wù)實現(xiàn)的兩種表現(xiàn)形式,業(yè)務(wù)實
2、體在內(nèi)存中表現(xiàn)為對象,在數(shù)據(jù)庫中表現(xiàn)為關(guān)系數(shù)據(jù)。內(nèi)存中的對象之間存在著關(guān)聯(lián)和繼承關(guān)系。而在數(shù)據(jù)庫中,關(guān)系數(shù)據(jù)無法直接表達多對多關(guān)聯(lián)和繼承關(guān)系。因此,ORM系統(tǒng)一般以中間件的形式存在,主要實現(xiàn)程序?qū)ο蟮疥P(guān)系數(shù)據(jù)庫數(shù)據(jù)的映射。一般的ORM包括四個部分:對持久類對象進行CRUD操作的API、用來規(guī)定類和類屬性相關(guān)查詢的語言或API、規(guī)定mappingmetadata的工具,以及可以讓ORM實現(xiàn)同事務(wù)對象一起進行dirtychecking、lazyassociationfetching和其他優(yōu)化操作的技術(shù)。4.1Hibernate概述
3、2.Hibernate體系結(jié)構(gòu)Hibernate作為模型層/數(shù)據(jù)訪問層。它通過配置文件(hibernate.cfg.xml或hibernate.properties)和映射文件(*.hbm.xml)把Java對象或持久化對象(PersistentObject,PO)映射到數(shù)據(jù)庫中的數(shù)據(jù)表,然后通過操作PO,對數(shù)據(jù)庫中的表進行各種操作,其中PO就是POJO(普通Java對象)加映射文件。Hibernate的體系結(jié)構(gòu)如圖4.1所示。圖4.1Hibernate體系結(jié)構(gòu)4.2Hibernate應(yīng)用基礎(chǔ)4.2.1Hibernate應(yīng)用實
4、例開發(fā)開發(fā)Hibernate項目的步驟如下。1.建立數(shù)據(jù)庫及表本書使用SQLServer2005數(shù)據(jù)庫。在XSCJ數(shù)據(jù)庫中建立KCB表,其表結(jié)構(gòu)如附錄A.2所示。2.在MyEclipse中創(chuàng)建對SQLServer的連接啟動MyEclipse,選擇【W(wǎng)indow】→【OpenPerspective】→【MyEclipseDatabaseExplorer】菜單項,打開MyEclipseDatabase瀏覽器,右擊菜單,如圖4.2所示,選擇【New…】菜單項,出現(xiàn)如圖4.3所示的對話框,編輯數(shù)據(jù)庫連接驅(qū)動。4.2.1Hibernat
5、e應(yīng)用實例開發(fā)圖4.2MyEclipseDatabase瀏覽器,創(chuàng)建一個新的連接圖4.3編輯數(shù)據(jù)庫連接驅(qū)動4.2.1Hibernate應(yīng)用實例開發(fā)編輯完成以后,在MyEclipseDatabase瀏覽器中,右擊剛才創(chuàng)建的MyConn數(shù)據(jù)庫連接,選擇“Openconnection…”菜單項,打開名為“MyConn”的數(shù)據(jù)連接,如圖4.4所示。圖4.4打開數(shù)據(jù)庫連接4.2.1Hibernate應(yīng)用實例開發(fā)3.創(chuàng)建Web項目,命名為“HibernateTest”4.添加Hibernate開發(fā)能力右擊項目名HibernateTest,
6、選擇【MyEclipse】→【AddHibernateCapabilites】菜單項,出現(xiàn)如圖4.5所示的對話框,選擇Hibernate框架應(yīng)用版本及所需要的類庫。圖4.5選擇Hibernate版本及所需Jar包4.2.1Hibernate應(yīng)用實例開發(fā)單擊【Next】按鈕,進入如圖4.6所示界面。創(chuàng)建Hibernate配置文件hibernate.cfg.xml,將該文件放在src文件夾下,后面會詳細介紹該文件內(nèi)容。這里先說明添加Hibernate開發(fā)功能的步驟。圖4.6創(chuàng)建配置文件hibernate.cfg.xml4.2.1H
7、ibernate應(yīng)用實例開發(fā)單擊【Next】按鈕,進入如圖4.7所示界面,指定Hibernate數(shù)據(jù)庫連接細節(jié)。由于在前面已經(jīng)配置一個名為MyConn的數(shù)據(jù)庫連接,所以這里只需要選擇DBDriver為“MyConn”即可。圖4.7指定hibernate數(shù)據(jù)庫連接4.2.1Hibernate應(yīng)用實例開發(fā)單擊【Next】按鈕,出現(xiàn)如圖4.8所示界面。Hibernate中有一個與數(shù)據(jù)庫打交道重要的類Session。而這個類是由工廠SessionFactory創(chuàng)建的。這個界面詢問是否需要創(chuàng)建SessionFactory類。如果需要創(chuàng)建
8、,還需要指定創(chuàng)建的位置和類名。這些接口都會在后面詳細介紹。單擊【Finish】按鈕,完成Hibernate的配置。圖4.8創(chuàng)建SessionFactory類來簡化Hibernate會話處理4.2.1Hibernate應(yīng)用實例開發(fā)5.生成數(shù)據(jù)庫表對應(yīng)的Java類對象和映射文件首