版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
使用Hibernate完成對(duì)象持久化本章目標(biāo)了解Hibernate的運(yùn)行原理了解Hibernate的優(yōu)勢(shì)掌握使用Hibernate的基本步驟會(huì)使用工具簡(jiǎn)化Hibernate操作本章簡(jiǎn)介這一章介紹了JavaEE的基本概念、JavaEE核心的API和JavaEE中不同的開(kāi)發(fā)角色。JavaEE技術(shù)提供了一整套基于組件的方案來(lái)設(shè)計(jì)、開(kāi)發(fā)、裝配和部署企業(yè)級(jí)應(yīng)用程序。為開(kāi)發(fā)者開(kāi)發(fā)企業(yè)級(jí)的解決方案提供了強(qiáng)有力的支持。本章的重點(diǎn)是WebLogic服務(wù)器的安裝、配置和相應(yīng)的環(huán)境變量的修改。今天,越來(lái)越多的開(kāi)發(fā)者想要編寫(xiě)企業(yè)級(jí)分布式事務(wù)處理的應(yīng)用程序,而這些應(yīng)用程序必須要在速度、安全性和可靠性等方面發(fā)揮出色。如果你已經(jīng)在這一領(lǐng)域從事工作,你應(yīng)該了解在當(dāng)今這個(gè)技術(shù)高速發(fā)展、要求苛刻的電子商務(wù)和信息技術(shù)的世界里,企業(yè)級(jí)的應(yīng)用程序必須具有以下特點(diǎn):花費(fèi)更少的金錢(qián)、具有更快的速度和占用更少的資源。為了減少費(fèi)用、快速設(shè)計(jì)和開(kāi)發(fā)企業(yè)級(jí)的應(yīng)用程序,Java2PlatformEnterpriseEdition(JavaEE)技術(shù)提供了一整套基于組件的方案來(lái)設(shè)計(jì)、開(kāi)發(fā)、裝配和部署企業(yè)級(jí)應(yīng)用程序。JavaEE平臺(tái)提供了一個(gè)多層結(jié)構(gòu)的分布式的應(yīng)用程序模型,該模型具有重用組件的能力、基于擴(kuò)展標(biāo)記語(yǔ)言(XML)的數(shù)據(jù)交換、統(tǒng)一的安全模式和靈活的事務(wù)控制。你不僅可以比以前更快地開(kāi)發(fā)出新的解決方案,而且獨(dú)立于平臺(tái)的基于組件的JavaEE解決方案不再受任何軟件服務(wù)器廠商和應(yīng)用程序編程接口(API)的限制??蛻艨梢宰约哼x擇最合適于他們的商業(yè)應(yīng)用和所需技術(shù)的產(chǎn)品和組件。為什么需要Hibernate2007年,北京某中心Y2學(xué)員小周在做畢業(yè)設(shè)計(jì)項(xiàng)目的時(shí)候,發(fā)現(xiàn)反反復(fù)復(fù)地寫(xiě)DAO層代碼太麻煩了,如示例代碼4-l所示,是一個(gè)租房網(wǎng)的租房業(yè)務(wù)邏輯類中封裝的錄入房屋信息的方法。他負(fù)責(zé)的模塊每個(gè)表都少則十幾個(gè)字段,多則幾十個(gè)字段,這種重復(fù)性的編碼工作沒(méi)有任何創(chuàng)造性,而且容易出錯(cuò)。publicvoidinsertFwxx(FWXXfwxx)
{openConn();Stringsql="";sql="insertintoTBL_FWXX(uid,jdid,lxid,shi,ting,fwxx,zj,title,date,telephone,lxr)
values(?,?,?,?,?,?,?,?,?,?,?)";try{pstmt=conn.prepareStatement(sql);pstmt.setInt(1,fwxx.getUid());//uidpstmt.setInt(2,fwxx.getJdid());//街道表idpstmt.setInt(3,fwxx.getLxid());//房屋類型表idpstmt.setInt(4,fwxx.getShi());//幾室pstmt.setInt(5,fwxx.getTing());//幾廳pstmt.setString(6,fwxx.getFwxx());//租房信息pstmt.setInt(7,fwxx.getZj());//月租金pstmt.setString(8,fwxx.getTitle());//標(biāo)題pstmt.setString(9,(newSimpleDateFormat("yyyy-MM-ddHH:mm:ss")).format(newDate()));//插入時(shí)間pstmt.setString(10,fwxx.getTelephone());pstmt.setString(11,fwxx.getLxr());pstmt.executeUpdate();}catch(SQLExceptione)
{e.printStackTrace();}closeAll();}問(wèn)題解決這樣的編碼工作太繁瑣了,占用了他大部分的開(kāi)發(fā)時(shí)間。不過(guò)為了實(shí)現(xiàn)一個(gè)功能強(qiáng)大、讓自己滿意的系統(tǒng),他堅(jiān)持了下來(lái)。在實(shí)現(xiàn)了所有功能之后,他覺(jué)得肯定有更聰明的方法!在老師的指導(dǎo)下,他自學(xué)了課本上沒(méi)有介紹過(guò)的反射技術(shù),深入學(xué)習(xí)了JDBC中metadata相關(guān)的知識(shí),一個(gè)方案在他頭腦中成形了。小周是一個(gè)事情沒(méi)做好吃飯睡覺(jué)都不踏實(shí)的人。短短3天時(shí)間,他實(shí)現(xiàn)了一個(gè)通用的DAO類。從而再也不用理會(huì)那些繁瑣的字段名和pstmt的getter/setter方法了。Hibernate的價(jià)值在于,對(duì)JDBC訪問(wèn)數(shù)據(jù)庫(kù)的代碼做了封裝,大大簡(jiǎn)化了數(shù)據(jù)訪問(wèn)層繁瑣的重復(fù)性代碼。到本章結(jié)束的時(shí)候,我們可以看到:使用Hibernate之后的DAO層代碼和之前的相比清爽了多少!Hibernate是什么持久化“對(duì)象-關(guān)系”映射持久化程序運(yùn)行的時(shí)候,有些程序數(shù)據(jù)保存在內(nèi)存中,當(dāng)程序退出后,這些數(shù)據(jù)就不復(fù)存在了,所以,我們稱這些數(shù)據(jù)的狀態(tài)為瞬時(shí)的(Transient)。有些數(shù)據(jù),在程序退出后,還以文件等形式保存在存儲(chǔ)設(shè)備(硬盤(pán)、光盤(pán)等)中,我們稱這些數(shù)據(jù)的狀態(tài)是持久的(Persistent)。JDBC機(jī)制JDBC就是一種持久化機(jī)制。將程序數(shù)據(jù)直接保存成文本文件也是持久化機(jī)制的一種實(shí)現(xiàn)。但我們常用的是將程序數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中。在三層結(jié)構(gòu)中,DAO層(數(shù)據(jù)訪問(wèn)層)有時(shí)候也稱為持久
化層,如圖4-2所示。因?yàn)檫@一層承擔(dān)的主要工作就是將數(shù)
據(jù)保存到數(shù)據(jù)庫(kù)中或把數(shù)據(jù)從數(shù)據(jù)庫(kù)中讀取出來(lái)?!皩?duì)象-關(guān)系”映射JavaEE應(yīng)用服務(wù)器以容器的形式為每一個(gè)組件類型提供底層服務(wù)。因?yàn)槲覀儾恍枰约洪_(kāi)發(fā)這些服務(wù),這使我們可以全力以赴地著手處理商業(yè)邏輯問(wèn)題。一個(gè)JavaEE應(yīng)用程序運(yùn)行前,它們必須被部署到JavaEE應(yīng)用服務(wù)器中。通常,一個(gè)JavaEE的應(yīng)用服務(wù)器提供了EJB容器和Web容器。EnterpriseJavaBeans(EJB)容器用來(lái)管理JavaEE應(yīng)用程序的EJB的運(yùn)行。Web容器用來(lái)管理JavaEE應(yīng)用程序中JSP頁(yè)面和Servlet等Web組件的運(yùn)行。綜上所述,Hibernate是一個(gè)基于JDBC的主流持久化框架,是一個(gè)優(yōu)秀的ORM實(shí)現(xiàn)。它能很大程度地簡(jiǎn)化DAO層的編碼工作,下面我們就來(lái)看看Hibernate如何發(fā)揮它的神奇魔力。使用Hibernate的基本步驟準(zhǔn)備工作需要的jar包Hibernate的官方主頁(yè)是***hibernate***,我們需要的jar包都可以從官方網(wǎng)站上下載得到。在Eclipse中,MyEclipse插件已經(jīng)集成了對(duì)Hibernate開(kāi)發(fā)的支持,所以我們不必自己下載Hibernate依賴的jar包。在彈出的“HibernateSupportforMyEclipse”對(duì)話框中,選擇“Hibernate3.2”單選項(xiàng)。如果想查看MyEclipse將自動(dòng)為我們添加哪些包,可以單擊“Viewandeditlibraries…”按鈕查看,Hibernate配置文件實(shí)例類和映射文件使用Hibernate實(shí)現(xiàn)用戶添加使用Hibernate實(shí)現(xiàn)數(shù)據(jù)的刪改與修改類似,刪除時(shí)也需要先加載數(shù)據(jù)。在使用Hibernate編寫(xiě)持久化代碼時(shí),不需要再有數(shù)據(jù)庫(kù)表、字段等概念。根據(jù)面向?qū)ο蟮恼Z(yǔ)義,刪除操作方法的參數(shù)理所當(dāng)然是將要?jiǎng)h除的對(duì)象,而不是主鍵。以面向?qū)ο蟮乃季S編寫(xiě)代碼是Hibernate持久化操作接口設(shè)計(jì)的一個(gè)理念。使用工具簡(jiǎn)化Hibernate開(kāi)發(fā)我們首先看一下如何使用MyEclipse簡(jiǎn)化Hibernate的開(kāi)發(fā)。在4.4節(jié),我們使用MyEclipse工具給項(xiàng)目添加Hibernate支持,自動(dòng)添加了Hibernate配置文件。使用MyEclipseHibernateConfigEditorHibernate配置文件,如圖4-9所示,單擊DBConnectProfile旁邊的“New…”按鈕,用向?qū)渲脭?shù)據(jù)庫(kù)連接信息。在彈出的DatabaseProfile對(duì)話框中,Profilename可以隨意。URL一定要填寫(xiě)正確,單擊“下一步”按鈕。在SchemaDetails對(duì)話框中,選擇正確的數(shù)據(jù)庫(kù),單擊“完成”按鈕。MyEclipse就會(huì)自動(dòng)在Hibernate配置文件中配置好數(shù)據(jù)庫(kù)相關(guān)參數(shù),如圖4-11所示。那么映射文件呢?例如,TblUser.hbm.xml,是不是也有工具輔助完成呢?是的!映射文件完全可以使用工具自動(dòng)生成!在Eclipse工作區(qū)右上角選擇進(jìn)入MyEclipseDatabaseExplorer透視圖(也可以通過(guò)菜單“窗口”
“透視圖”
“MyEclipseDatabaseExplorer”進(jìn)入)在項(xiàng)目中使用Hibernate
前面介紹了使用MyEclipse簡(jiǎn)化“3個(gè)準(zhǔn)備”,但“7個(gè)步驟”怎樣簡(jiǎn)化呢?我們?cè)?jīng)使用BaseJdbcDAO簡(jiǎn)化JDBC的編碼,現(xiàn)在采用類似的方法簡(jiǎn)化Hibernate的編碼。在給項(xiàng)目添加Hibernate支持的過(guò)程中還生成了一個(gè)HibernateSessionFactory工具類,我們也好好利用一下。這里只提供了簡(jiǎn)單的查詢方法,Hibernate查詢我們將在第六章學(xué)習(xí)。需要注意的是,get和delete的傳入?yún)?shù)類型為Class和Serializable。Class表示“類”,可以通過(guò)“類名.class”得到其實(shí)例,如“User.class”。Serializable是一個(gè)接口,不包含任何需要實(shí)現(xiàn)的方法,只是表示實(shí)現(xiàn)這個(gè)接口的類可以序列化?,F(xiàn)在我們就繼承BaseHibernateDAO類并實(shí)現(xiàn)FwxxDAO接口,完成房屋信息管理的業(yè)務(wù)邏輯,總結(jié)Hibernate是一個(gè)基于JDBC的持久化解決方案,是一個(gè)優(yōu)秀的“對(duì)象-關(guān)系”映射框架。
使用Hibernate前要做好
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人與企業(yè)間知識(shí)產(chǎn)權(quán)許可協(xié)議(2024版)5篇
- 2025年度智能硬件產(chǎn)品獨(dú)家代理銷售合同協(xié)議4篇
- 2025年廠區(qū)突發(fā)事件應(yīng)急預(yù)案服務(wù)合同范本4篇
- 臨時(shí)工作人員雇傭協(xié)議示例(2024年度)版B版
- 個(gè)人循環(huán)貸款最高限額合同書(shū)2024年版一
- 2025年度國(guó)際貿(mào)易代理產(chǎn)品認(rèn)證合同范本4篇
- 2024年05月上海/北京中國(guó)工商銀行數(shù)據(jù)中心星令營(yíng)暑期實(shí)習(xí)項(xiàng)目筆試歷年參考題庫(kù)附帶答案詳解
- 《合成抗菌材料》課件
- 2025年度區(qū)塊鏈技術(shù)應(yīng)用與維護(hù)服務(wù)合同3篇
- 專用配件銷售協(xié)議(2024年度)版A版
- 春節(jié)文化常識(shí)單選題100道及答案
- 12123交管學(xué)法減分考試題及答案
- 2024年杭州師范大學(xué)附屬醫(yī)院招聘高層次緊缺專業(yè)人才筆試真題
- 制造業(yè)BCM業(yè)務(wù)連續(xù)性管理培訓(xùn)
- 24年追覓在線測(cè)評(píng)28題及答案
- TGDNAS 043-2024 成人靜脈中等長(zhǎng)度導(dǎo)管置管技術(shù)
- 《陸上風(fēng)電場(chǎng)工程概算定額》NBT 31010-2019
- 招投標(biāo)法考試試題及答案
- 皮帶輸送機(jī)工程施工電氣安裝措施要點(diǎn)
- 藥房(冰柜)溫濕度表
- QJ903.9A-1995航天產(chǎn)品工藝文件管理制度管理用工藝文件編制規(guī)則
評(píng)論
0/150
提交評(píng)論