SSH輕量級(jí)框架實(shí)踐課件:使用Hibernate完成對(duì)象持久化_第1頁
SSH輕量級(jí)框架實(shí)踐課件:使用Hibernate完成對(duì)象持久化_第2頁
SSH輕量級(jí)框架實(shí)踐課件:使用Hibernate完成對(duì)象持久化_第3頁
SSH輕量級(jí)框架實(shí)踐課件:使用Hibernate完成對(duì)象持久化_第4頁
SSH輕量級(jí)框架實(shí)踐課件:使用Hibernate完成對(duì)象持久化_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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中不同的開發(fā)角色。JavaEE技術(shù)提供了一整套基于組件的方案來設(shè)計(jì)、開發(fā)、裝配和部署企業(yè)級(jí)應(yīng)用程序。為開發(fā)者開發(fā)企業(yè)級(jí)的解決方案提供了強(qiáng)有力的支持。本章的重點(diǎn)是WebLogic服務(wù)器的安裝、配置和相應(yīng)的環(huán)境變量的修改。今天,越來越多的開發(fā)者想要編寫企業(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)更少的金錢、具有更快的速度和占用更少的資源。為了減少費(fèi)用、快速設(shè)計(jì)和開發(fā)企業(yè)級(jí)的應(yīng)用程序,Java2PlatformEnterpriseEdition(JavaEE)技術(shù)提供了一整套基于組件的方案來設(shè)計(jì)、開發(fā)、裝配和部署企業(yè)級(jí)應(yīng)用程序。JavaEE平臺(tái)提供了一個(gè)多層結(jié)構(gòu)的分布式的應(yīng)用程序模型,該模型具有重用組件的能力、基于擴(kuò)展標(biāo)記語言(XML)的數(shù)據(jù)交換、統(tǒng)一的安全模式和靈活的事務(wù)控制。你不僅可以比以前更快地開發(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ù)地寫DAO層代碼太麻煩了,如示例代碼4-l所示,是一個(gè)租房網(wǎng)的租房業(yè)務(wù)邏輯類中封裝的錄入房屋信息的方法。他負(fù)責(zé)的模塊每個(gè)表都少則十幾個(gè)字段,多則幾十個(gè)字段,這種重復(fù)性的編碼工作沒有任何創(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();}問題解決這樣的編碼工作太繁瑣了,占用了他大部分的開發(fā)時(shí)間。不過為了實(shí)現(xiàn)一個(gè)功能強(qiáng)大、讓自己滿意的系統(tǒng),他堅(jiān)持了下來。在實(shí)現(xiàn)了所有功能之后,他覺得肯定有更聰明的方法!在老師的指導(dǎo)下,他自學(xué)了課本上沒有介紹過的反射技術(shù),深入學(xué)習(xí)了JDBC中metadata相關(guān)的知識(shí),一個(gè)方案在他頭腦中成形了。小周是一個(gè)事情沒做好吃飯睡覺都不踏實(shí)的人。短短3天時(shí)間,他實(shí)現(xiàn)了一個(gè)通用的DAO類。從而再也不用理會(huì)那些繁瑣的字段名和pstmt的getter/setter方法了。Hibernate的價(jià)值在于,對(duì)JDBC訪問數(shù)據(jù)庫的代碼做了封裝,大大簡(jiǎn)化了數(shù)據(jù)訪問層繁瑣的重復(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è)備(硬盤、光盤等)中,我們稱這些數(shù)據(jù)的狀態(tài)是持久的(Persistent)。JDBC機(jī)制JDBC就是一種持久化機(jī)制。將程序數(shù)據(jù)直接保存成文本文件也是持久化機(jī)制的一種實(shí)現(xiàn)。但我們常用的是將程序數(shù)據(jù)保存到數(shù)據(jù)庫中。在三層結(jié)構(gòu)中,DAO層(數(shù)據(jù)訪問層)有時(shí)候也稱為持久

化層,如圖4-2所示。因?yàn)檫@一層承擔(dān)的主要工作就是將數(shù)

據(jù)保存到數(shù)據(jù)庫中或把數(shù)據(jù)從數(shù)據(jù)庫中讀取出來?!皩?duì)象-關(guān)系”映射JavaEE應(yīng)用服務(wù)器以容器的形式為每一個(gè)組件類型提供底層服務(wù)。因?yàn)槲覀儾恍枰约洪_發(fā)這些服務(wù),這使我們可以全力以赴地著手處理商業(yè)邏輯問題。一個(gè)JavaEE應(yīng)用程序運(yùn)行前,它們必須被部署到JavaEE應(yīng)用服務(wù)器中。通常,一個(gè)JavaEE的應(yīng)用服務(wù)器提供了EJB容器和Web容器。EnterpriseJavaBeans(EJB)容器用來管理JavaEE應(yīng)用程序的EJB的運(yùn)行。Web容器用來管理JavaEE應(yīng)用程序中JSP頁面和Servlet等Web組件的運(yùn)行。綜上所述,Hibernate是一個(gè)基于JDBC的主流持久化框架,是一個(gè)優(yōu)秀的ORM實(shí)現(xiàn)。它能很大程度地簡(jiǎn)化DAO層的編碼工作,下面我們就來看看Hibernate如何發(fā)揮它的神奇魔力。使用Hibernate的基本步驟準(zhǔn)備工作需要的jar包Hibernate的官方主頁是***hibernate***,我們需要的jar包都可以從官方網(wǎng)站上下載得到。在Eclipse中,MyEclipse插件已經(jīng)集成了對(duì)Hibernate開發(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編寫持久化代碼時(shí),不需要再有數(shù)據(jù)庫表、字段等概念。根據(jù)面向?qū)ο蟮恼Z義,刪除操作方法的參數(shù)理所當(dāng)然是將要?jiǎng)h除的對(duì)象,而不是主鍵。以面向?qū)ο蟮乃季S編寫代碼是Hibernate持久化操作接口設(shè)計(jì)的一個(gè)理念。使用工具簡(jiǎn)化Hibernate開發(fā)我們首先看一下如何使用MyEclipse簡(jiǎn)化Hibernate的開發(fā)。在4.4節(jié),我們使用MyEclipse工具給項(xiàng)目添加Hibernate支持,自動(dòng)添加了Hibernate配置文件。使用MyEclipseHibernateConfigEditorHibernate配置文件,如圖4-9所示,單擊DBConnectProfile旁邊的“New…”按鈕,用向?qū)渲脭?shù)據(jù)庫連接信息。在彈出的DatabaseProfile對(duì)話框中,Profilename可以隨意。URL一定要填寫正確,單擊“下一步”按鈕。在SchemaDetails對(duì)話框中,選擇正確的數(shù)據(jù)庫,單擊“完成”按鈕。MyEclipse就會(huì)自動(dòng)在Hibernate配置文件中配置好數(shù)據(jù)庫相關(guān)參數(shù),如圖4-11所示。那么映射文件呢?例如,TblUser.hbm.xml,是不是也有工具輔助完成呢?是的!映射文件完全可以使用工具自動(dòng)生成!在Eclipse工作區(qū)右上角選擇進(jìn)入MyEclipseDatabaseExplorer透視圖(也可以通過菜單“窗口”

“透視圖”

“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支持的過程中還生成了一個(gè)HibernateSessionFactory工具類,我們也好好利用一下。這里只提供了簡(jiǎn)單的查詢方法,Hibernate查詢我們將在第六章學(xué)習(xí)。需要注意的是,get和delete的傳入?yún)?shù)類型為Class和Serializable。Class表示“類”,可以通過“類名.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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論