【正文】
與其他開發(fā)框架的集成將越來越成熟:如與 struts、 spring、 jbpm 的集成,充分發(fā)揮 Hibernate 自身的優(yōu)勢(shì),也吸取了對(duì)方框架的優(yōu)勢(shì),在軟件系統(tǒng)的 各個(gè)層各司其職。同時(shí), Hibernate 除了 Java主流開發(fā)平臺(tái)上(例如 MyEclipse)有廣泛的應(yīng)用外,還對(duì)當(dāng)今另一主流開發(fā)平臺(tái)——微軟 的 .NET 平臺(tái)進(jìn)行了支持,因此具有更加強(qiáng)大的生命力。而網(wǎng)頁的內(nèi)容已經(jīng)不是簡(jiǎn)單的靠手動(dòng)來將內(nèi)容嵌入到腳本語言中,這些內(nèi)容都是從數(shù)據(jù)庫(kù)中提取,利用相關(guān)技術(shù)在網(wǎng)頁中進(jìn)行顯示。目前,關(guān)系數(shù)據(jù)庫(kù)仍然是使用最廣泛的數(shù)據(jù)存儲(chǔ)庫(kù)。目前,購(gòu)書網(wǎng)站在國(guó)際互聯(lián)網(wǎng)上可以實(shí)現(xiàn)的商務(wù)功能已經(jīng)多樣化,可以說從最基本的對(duì)外溝通展示功能、信息發(fā)布功能,在線圖書展示功能、在線洽談功能、在線交易功能、在線采購(gòu)功能、在線客戶服務(wù)功能、在線網(wǎng)站管理功能等等,幾乎以往傳統(tǒng)書店功能都可以在互聯(lián)網(wǎng)上進(jìn)行電子化 的高效運(yùn)作。熟悉 Hibernate 中的框架結(jié)構(gòu)、工作原理。 學(xué)號(hào) 20xx32580013 密級(jí) ________________ 武漢大學(xué)本科畢業(yè)論文 Hibernate 持久化技術(shù)在網(wǎng)上購(gòu)書系統(tǒng)中的設(shè)計(jì)與實(shí)現(xiàn) 院(系)名 稱: 國(guó)際軟件學(xué)院 專 業(yè) 名 稱 : 軟件工程 學(xué) 生 姓 名 : 皮攀 指 導(dǎo) 教 師 : 二 ○○九 年六月 BACHELOR39。 本論文主要研究 Hibernate 的 ORM( Object Relationship Mapping)框架 、 持久化功能 以及 Hibernate 中的 六 個(gè)核心接口 Session、 SessionFactory、 Transaction、Query、 Criteria 和 Configuration,并對(duì)其進(jìn)行相關(guān)實(shí)踐。 研究背景 隨著全球經(jīng)濟(jì)一體化的逐步深入,購(gòu)書網(wǎng)站已是現(xiàn)代傳統(tǒng)書店必不可少的經(jīng)營(yíng)策略,像卓越、當(dāng)當(dāng)網(wǎng)等等這些購(gòu)書網(wǎng)站在互聯(lián)網(wǎng)時(shí)代取得了巨大的成功。),即把對(duì)象存儲(chǔ)到專門的數(shù)據(jù)存儲(chǔ)庫(kù)中。而發(fā)展到現(xiàn)在,萬維網(wǎng)采用了更多更先進(jìn)的技術(shù),例如 CSS、 JavaScript、 Ajax等等,使網(wǎng)頁更加漂亮,更加容易維護(hù),并且具有動(dòng)態(tài)的效果。 Hibernate3 在產(chǎn)品的應(yīng)用性上有了極大提高,并且基于 進(jìn)行了改進(jìn),且與 進(jìn)行了集成,在功能上有了很大的提升。 而 Hibernate 它作為一種技術(shù),它 是一個(gè)非常優(yōu)秀的持久層解決方案。 項(xiàng)目研究的目的和意義 研究目的 由于技術(shù)發(fā)展的背景, Hibernate 應(yīng)運(yùn)而生,它是輕量 ORM( Object Relationship Mapping 對(duì)象關(guān)系映射)框架,能夠?qū)崿F(xiàn)對(duì)對(duì)象和關(guān)系數(shù)據(jù)之間的交互,實(shí)現(xiàn)了對(duì)象持久化的需求,順應(yīng)了現(xiàn)代企業(yè)開發(fā)中的面向?qū)ο蟮拈_發(fā)需求。 本章小結(jié) 本章主要是介紹了 Hibernate 的研究背景、意義、目的,以及 Hibernate 的發(fā)展趨勢(shì),從宏觀方面介紹了 Hibernate,同時(shí)也說明了本論文的主要內(nèi)容。系統(tǒng)的簡(jiǎn)單用例如 圖 所示。 ? 圖書信息管理:對(duì)圖書信息進(jìn)行 修改, 增加 。 模塊 的簡(jiǎn)單 流程 : 用戶首先填寫相關(guān)注冊(cè)信息,當(dāng)這些注冊(cè)信息通過驗(yàn)證以后,就會(huì)被插入到數(shù)據(jù)庫(kù)中。 2) 從 Entity 中提取出用戶密碼、用戶狀態(tài)以及其他信息。 模塊的簡(jiǎn)單 流程 : 用戶可以修改用戶名以外的其他個(gè)人注冊(cè)信息 ,模塊將會(huì)更新用戶在數(shù)據(jù)庫(kù)中的信息 。 Hibernate 實(shí)現(xiàn)過程 設(shè)計(jì) : 1) 用戶打開自己的購(gòu)物車的時(shí)候, 模塊會(huì)調(diào)用 Hibernate API 中的 Criteria,根據(jù)用戶名來調(diào)用獲取 Entity 對(duì)象,在 Entity 中除了封裝了用戶的個(gè)人信息外,還有訂單信息。 2) 模塊首先會(huì)將添加的信息進(jìn)行驗(yàn)證。 3) 管理員提交以后,書籍更新的信息被封裝到一個(gè)新的 Entity 中,模塊調(diào)用Hibernate API 的 update()來更新書籍信息。 4) 修改成功,返回 boolean=true,否則 boolean=false。 模塊的簡(jiǎn)單流程: 當(dāng)圖書類別表中的數(shù)據(jù)有問題時(shí),管理員使用該模塊。 模塊的簡(jiǎn)單流程: 管理員進(jìn)入管理員登 陸界面,然后輸入相關(guān)登陸信息,模塊從數(shù)據(jù)庫(kù)中提取出管理員的信息,并將其封裝到一個(gè) Entity 實(shí)體中,然后與管理員輸入的信息進(jìn)行比對(duì)。 3) 插入成功,模塊返回一個(gè) boolean=true,否則 boolean=false。 系統(tǒng)模塊設(shè)計(jì) RSS 系統(tǒng) 功能:用戶可以通過 RSS 系統(tǒng)來定制購(gòu)書網(wǎng)站里的特定信息。 ? Hibernate 的優(yōu)勢(shì)劣勢(shì),將會(huì)用 Hibernate 和 JDBC 進(jìn)行對(duì)比,來說明Hibernate 的優(yōu)勢(shì)和劣勢(shì)。所以 從市場(chǎng)份額來說,它有著非常大的優(yōu)勢(shì)。 文件 它是 Hibernate 中的核心文件,由于 Hibernate 是 JDBC 的輕量級(jí)封裝。 JDBC 驅(qū)動(dòng)是 Java 程序訪問數(shù)據(jù)庫(kù)的接口驅(qū)動(dòng)程序。 ② 中 name 表示實(shí)體中主鍵屬性的名字, type 表示數(shù)據(jù)類型。 中注冊(cè)才能生效。但需要注意的是Session 對(duì)象是非線程安全的。在 Hibernate 的啟動(dòng)的過程中, Configuration 類的實(shí)例首先定位映射文檔位置、讀取配置,然后創(chuàng)建 SessionFactory 對(duì)象。 1) 增 : save( Entity),將封裝有數(shù)據(jù)的實(shí)體插入到數(shù)據(jù)庫(kù)中。 在下一章,將介紹網(wǎng)上購(gòu)書網(wǎng)站的數(shù)據(jù)庫(kù)設(shè)計(jì)。這樣就能夠減少數(shù)據(jù)庫(kù)中數(shù)據(jù)的 冗余。 ? 系統(tǒng)驗(yàn)證,介紹 對(duì) 系統(tǒng)測(cè)試 進(jìn)行黑河測(cè)試的 過程 。數(shù)據(jù)庫(kù) 支持了本系統(tǒng)的 數(shù)據(jù)的 持久性。 同時(shí)對(duì)于每本書,用戶可以進(jìn)行評(píng)論,用戶也可以進(jìn)行購(gòu)買圖書,所以在系統(tǒng)的數(shù)據(jù)庫(kù)中必須為評(píng)論和訂單 必須建立表。 Hibernate 的優(yōu)勢(shì)和劣勢(shì) Hibernate 作為 JDBC 的非常輕量級(jí)封裝,相對(duì)于 JDBC,它有諸多優(yōu)勢(shì),例如:Hibernate 能夠減少大量的 sql 語句的代碼編寫,減輕了開發(fā)人員的任務(wù)量;同時(shí)Hibernate 是是一個(gè)輕量級(jí)封裝,所 以它占用的空間、內(nèi)存是非常小的。它可以使用 HQL 語言或 SQL 語句兩種表達(dá)方式。它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建 Session 對(duì)象。 各個(gè)接口在框架中有不同的作用,不同的位置,具體如圖 所示。 ⑥ 中 name 表示數(shù)據(jù)庫(kù)表中所對(duì)應(yīng)的屬性名, type 表示數(shù)據(jù)類型。 ⑦ 是注冊(cè) 。 ② 是表示訪問數(shù)據(jù)庫(kù)的用戶名。通過以上可以看出,Hibernate 的操作對(duì)象是 Entity 對(duì)象,而不是直接的數(shù)據(jù) 。 對(duì)于為什么要使用 Hibernate?主要有以下幾點(diǎn): ? Hibernate 支持了企業(yè)級(jí)開發(fā)中數(shù)據(jù)對(duì)象的持久化。本章從宏觀和微觀的 角度介紹了本系統(tǒng)。 2) 系統(tǒng)以頁面形式返回給超級(jí)管理員,超級(jí)管理員通過該網(wǎng)頁進(jìn)行修改該管理員的信息。 超級(jí)管理員增加管理員 功能: 超級(jí)管理員增加系統(tǒng)新的管理員。 3) 修改以后,提交。然后提交。 Hibernate 的實(shí)現(xiàn)過程設(shè)計(jì): 1) 管理員首先進(jìn)入搜索頁面,輸入用戶的用戶名,搜索出用戶的狀態(tài)信息。 更新圖書 功能:用于更新圖書信息。 管理員模塊設(shè)計(jì) 增加圖書 功能:用于增加新圖書信息。 4) 修改成功,模塊會(huì)返回一個(gè) boolean=true,否則會(huì)返回 boolean=false。 Hibernate 實(shí)現(xiàn) 過 程 設(shè)計(jì) : 1) 用戶在發(fā)布評(píng)論后,用戶評(píng)論模塊首先將用戶的用戶 ID、書籍 ID、評(píng)論內(nèi)容以及發(fā)表評(píng)論的時(shí)間都封裝到一個(gè) Entity 對(duì)象中。 用戶登陸 功能 :用于實(shí)現(xiàn)用戶登陸。 3) 系統(tǒng)模塊: ? RSS 系統(tǒng),用于定制特定內(nèi)容。 ? 用戶評(píng)論發(fā)布:用戶發(fā)布圖書評(píng) 價(jià)信息。 系統(tǒng) 簡(jiǎn)單 介紹 系統(tǒng)的定位 以及系統(tǒng)開發(fā)軟件 網(wǎng)上購(gòu)書網(wǎng)站是一個(gè) B/C( Business to Client)網(wǎng)站 ,售書公司可以通過購(gòu)書網(wǎng)站作為平臺(tái)來展示自己的產(chǎn)品,同時(shí)和客戶進(jìn)行網(wǎng)上交易。 研究 Hibernate 不但順應(yīng)了技術(shù)的發(fā)展,同時(shí)也能夠參與 Hibernate 的研究的討論,對(duì)推動(dòng)技術(shù)的發(fā)展能夠做出自己的貢獻(xiàn)。 ? 與 EJB 更好的集成:集成 EJB,開始將重點(diǎn)轉(zhuǎn)向重量級(jí)應(yīng)用,使得 Hibernate在企業(yè)級(jí)應(yīng)用中必將占據(jù)一席之地。 3 ? HQL 查詢語句: Hibernate3 采用新的基于 ANTLR 的 HQL/SQL 查詢翻譯器,不過, Hibernate2 的查詢翻譯器也依然存在。 相對(duì)于萬維網(wǎng) 發(fā)展 而言, Hibernate 雖然產(chǎn)生時(shí)間比較短 , 但 Hibernate 版本更新速度 非常 快, 到 目前為止有兩個(gè)階段性的版本: Hibernate2 和 Hibernate3。而 Hibernate 就是這種發(fā)展趨勢(shì)的成果,它的產(chǎn)生解決了對(duì)象的持久化問題。眾所周知,對(duì)象只能存在于內(nèi)存中,而內(nèi)存不能永久保存數(shù)據(jù)。利用 Hibernate 的相關(guān)技術(shù) 來對(duì)其功能進(jìn)行優(yōu)化,達(dá)到高性能。對(duì)本論文所涉及的研究工作做出貢獻(xiàn)的其他個(gè)人和集體,均已在文中以明確的方式標(biāo)明。本學(xué)位論文的知識(shí)產(chǎn)權(quán)歸屬于培養(yǎng)單位。 關(guān)鍵詞: ORM; 持久化 ; Hibernate 的核心接口 ABSTRACT Hibernate is a open source objectrelation mapping framework, who encapsulates JDBC in a lightweightobject way, and this makes Java programmers operate database in the ObjectOriented way arbitrarily. The Hibernate could user in the place where the JDBC could use, both using in the client, and in the the application of Servlet/JSP, the most revolutionary mean is that, the Hibernate could be used in the J2EE with EJB instead of CMP, to acplish the persistence. The aim of this the paper is to study the ORM framework of the Hibernate, persistence and the six core interfaces in the Hibernate: Session, SessionFactory, Transaction, Query, Criteria and Configuration, and implement them in the project. Understanding the framework of the Hibernate, the principle and the API of the Hibernate. With the implement of the Hibernate in the Online Bookstore, experience and study the framework and persistence of the Hibernate. Achievement: With the Hibernate to implementing the base functions of the business level of the Online Bookstore. Use the other technologies of the Hibernate to optimize the functions, reaching higher efficiency. Keywords: ORM; Persistence; Hibernate Core Interface( Session, SessionFactory,Transaction, Query , Criteria and Configuration) 目 錄 第 1 章 緒論 .......................................................................................1 本章內(nèi)容介紹 ...................................................................................