計算機軟件及應用第12單元-Hibernate高級特性_第1頁
計算機軟件及應用第12單元-Hibernate高級特性_第2頁
計算機軟件及應用第12單元-Hibernate高級特性_第3頁
計算機軟件及應用第12單元-Hibernate高級特性_第4頁
計算機軟件及應用第12單元-Hibernate高級特性_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第12單元Hibernate高級特性單元描述

Hibernate框架作為一個使用面向對象技術和數(shù)據(jù)庫打交道的框架,其本身也要確保高效、安全、準確地獲取數(shù)據(jù)庫中的數(shù)據(jù)。DBMS通過對事務的管理,可以有效地解決數(shù)據(jù)的各種沖突。Hibernate本身并不支持事務,而是對各種級別的事務進行了封裝,本單元主要介紹Hibernate對JDBC和JTA兩個級別的事件事務。事務和鎖的概念密不可分,從技術層面上講,事務是通過鎖的機制來解決數(shù)據(jù)沖突的。為了更好地提升系統(tǒng)性能,Hibernate提供了緩存技術。單元目標:

本單元的目標是了解Hibernate的高級特定:事務管理、鎖、緩存技術。

了解事務的基本概念;

掌握HibernateJDBC事務處理;

熟悉HibernateJTA管理事務;

了解并掌握鎖的概念;

掌握Hibernate緩存機制;

能夠運用Hibernate的查詢緩存機制。12.1任務1引入性案例

任務描述:在第11單元中講述了如何使用Hibernate實現(xiàn)多表連接查詢,但是無論是在引入性案例還是進階式案例中,所解決的問題都是基于兩張表的多表連接查詢。但在“網上購物系統(tǒng)”中,數(shù)據(jù)表不止兩張,用戶需要到網上按照商品類別檢索商品信息,選中商品后要將需要的商品放入購物車,在購物車模塊可以對自己挑選的商品進行篩選,對于不想購買的商品還可以執(zhí)行刪除操作,選中想購買的商品選后,確認無誤就進入交貨單模塊進行處理了。

本案例的任務是查詢購物車中的所有商品的詳細信息,并刪除購物車表單中的某條記錄后,再查詢購物車表單中的信息,確認刪除成功。12.1任務1引入性案例

任務目標:利用當前已掌握的技術,完全可以使用Hibernate框架實現(xiàn)購物車中商品詳細信息的查詢,以及購物車中商品的刪除操作。完成案例后,需要找出這種解決方案的不足。12.1.1案例分析

本案例需要完成的功能是對購物車中的商品進行管理。查詢購物車中用戶選購的商品的詳細信息,包括選購該商品的用戶名、商品名稱、商品種類、商品價格、商品折扣率、商品描述信息等。另外,實現(xiàn)刪除購物車中的某條記錄,然后再次查詢用戶選購商品的詳細信息,證明該商品已經成功從購物車表單中刪除。12.1.2設計步驟(1)向用戶表中插入數(shù)據(jù);(2)創(chuàng)建購物車表并完成數(shù)據(jù)的添加;(3)創(chuàng)建用戶表的持久化類:UserVo.java;12.1.2設計步驟(4)創(chuàng)建用戶表持久化類UserVo對應的映射文件:uservo.hbm.xml;(5)對商品信息表的持久化類ProductInfoVo進行修改;(6)對商品信息表持久化類ProductSortVo對應的映射文件productinfovo.hbm.xml進行修改;12.1.2設計步驟(7)修改商品類別表的持久化類:ProductSortVo.java;(8)修改商品類別表持久化類ProductSortVo對應的映射文件:productsortvo.hbm.xml;(9)創(chuàng)建購物車表的持久化類:CartVo.java;12.1.2設計步驟(10)創(chuàng)建購物車表持久化類CartVo對應的映射文件:cartvo.hbm.xml;(11)建立查詢購物車中商品詳細信息的測試類,實現(xiàn)商品詳細信息的查詢和購物車中商品的刪除:CartProduct.java;(12)執(zhí)行Java程序,顯示運行結果。12.1.3具體實現(xiàn)1.向用戶表中插入數(shù)據(jù)2.創(chuàng)建購物車表并完成數(shù)據(jù)的添加3.創(chuàng)建用戶表的持久化類4.創(chuàng)建用戶表持久化類UserVo對應的映射文件5.對商品信息表的持久化類ProductInfoVo進行修改12.1.3具體實現(xiàn)6.對商品信息表持久化類ProductInfoVo對應的映射文件productinfovo.hbm.xml進行修改7.商品類別表的持久化類8.商品類別表持久化類ProductSortVo對應的映射文件12.1.3具體實現(xiàn)9.創(chuàng)建購物車表的持久化類10.創(chuàng)建用戶表持久化類CartVo對應的映射文件11.建立查詢購物車中商品詳細信息的測試類12.執(zhí)行Java程序顯示運行結果12.1.4分析不足之處1.安全性發(fā)面2.執(zhí)行效率方面12.2任務2

Hibernate的事務管理

任務描述:事務是一個非常重要的概念。事務(Transaction)是工作中的基本邏輯單位,可以用于確保數(shù)據(jù)被正確修改,避免數(shù)據(jù)只修改了一部分而導致數(shù)據(jù)不完整,或者在修改時受到干擾。作為一位優(yōu)秀的軟件設計師,必須了解事務并合理利用,確保數(shù)據(jù)庫中數(shù)據(jù)的完整性。

任務目標:了解事務的基本概念以及Hibernate在事務方面的管理機制。12.2.1事務的基本概念

事務是一個邏輯工作單元,執(zhí)行的一系列操作。這一系列的操作要么全部被執(zhí)行,要么全部不被執(zhí)行,是一個不可分割的整體。

事務有四個屬性,分別是原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)。12.2.2基于JDBC的事務管理(1)hibernate.cfg.xml中的配置方式:(2)perties中的配置方式:12.2.3基于JTA的事務管理(1)在hibernate.cfg.xml中的配置方式。(2)在perties中的配置方式。12.3任務3

Hibernate的并發(fā)控制

任務描述:一個優(yōu)秀的Web系統(tǒng),可以容納成千上萬人并發(fā)訪問數(shù)據(jù)庫,即在同一時間段內多個事務同時請求同一個資源。當一個用戶讀取正由其他用戶更改的數(shù)據(jù)或者多個用戶同時修改同一數(shù)據(jù)時,如何保證數(shù)據(jù)庫處于完整性和一致性狀態(tài)呢?此時要用到并發(fā)控制的概念。為了解決事務并發(fā)過程中出現(xiàn)的問題,提出了鎖的概念。Hibernate提供兩種形式的鎖,一種是悲觀鎖,另一種是樂觀鎖。

任務目標:該任務的主要目標是學習Hibernate的并發(fā)控制策略。12.3.1并發(fā)的基本概念

數(shù)據(jù)庫可以實現(xiàn)資源共享,也就是可供多個用戶使用。例如飛機、火車訂票系統(tǒng)、銀行數(shù)據(jù)庫系統(tǒng),就允許在同一時刻多個用戶訪問數(shù)據(jù)庫。因此在這些數(shù)據(jù)庫系統(tǒng)中,在同一時間段內,并行運行的事務數(shù)可達數(shù)百個。并發(fā)指的是同一個時間段內多個事務同時請求同一個資源。12.3.2悲觀鎖

悲觀鎖是指對數(shù)據(jù)修改保持保守態(tài)度,認為任何時刻存取數(shù)據(jù),都可能有一個用戶也正在存取同一數(shù)據(jù)。為了保證數(shù)據(jù)完整性和一致性,為正在處理數(shù)據(jù)資源上鎖,其它所有事務都不可以訪問上鎖的資源。只有當前的事務提交后,其他事務才可以訪問剛被鎖定的數(shù)據(jù)。13.3.3樂觀鎖

樂觀鎖認為數(shù)據(jù)很少發(fā)生同時存取的問題,因此僅在應用程序的邏輯上實施控制。當數(shù)據(jù)出現(xiàn)了不一致狀態(tài)時,Hibernate采用版本檢查和時間戳等技術來實現(xiàn)讀取數(shù)據(jù)。1.版本控制2.時間戳控制12.4任務4

Hibernate的緩存管理

任務描述:緩存是提高系統(tǒng)性能的重要手段。當存在大量并發(fā)事務時,如果每次程序都要從數(shù)據(jù)庫直接做查詢操作,它們帶來的性能開銷是顯而易見的。頻繁的數(shù)據(jù)庫磁盤鍍錫操作會大大降低系統(tǒng)的性能。此時,如果能讓數(shù)據(jù)庫在本地內存中保留一個景象,下次訪問的時候只需要從內存中直接獲取,顯然可以帶來性能提升。

任務目標:Hibernate提供一級緩存、二級緩存,并提供第三方緩存的接口。本任務的目標就是了解Hibernate的緩存管理。12.4.1緩存原理12.4.2一級緩存

Hibernate的一級緩存是由Session實現(xiàn)的,它是事務級別的數(shù)據(jù)緩存。一旦事務結束,這個緩存也就失效。12.4.3二級緩存

二級緩存是SessionFactory范圍的緩存,所有Session共享一個二級緩存。Session在進行數(shù)據(jù)查詢操作時,會首先在自身內部的一級緩存中進行查找,如果一級緩存未能命中,則將在二級緩存中查詢,如果二級緩存命中,則將此數(shù)據(jù)作為結果返回。12.4.4查詢緩存

如果在程序中多次執(zhí)行完全相同的SQL語句,而每次執(zhí)行時,Hibernate都會到數(shù)據(jù)庫中去查詢,這會降低系統(tǒng)的性能,因此,Hibernate提供了查詢緩存來解決這個問題。12.4.4查詢緩存

實例2:使用查詢緩存連續(xù)三遍查詢用戶表,每次只輸出第一條記錄。該案例依然在ShoppingHibernate工程中完成。12.5任務5進階式案例——使用Hibernate的高級特性優(yōu)化引入性案例

任務描述:使用Hibernate的高級特性對引入性案例進行優(yōu)化,詳細闡述如何完成事務管理和查詢緩存在進階式案例中的使用。

任務目標:深入理解Hibernate高級特性的應用。12.5.1解決方案1.事務管理在案例中的使用2.查詢緩存在案例中的使用12.5.2具體實現(xiàn)

該案例依然在“ShoppingHibernate”上進行修改,其中數(shù)據(jù)庫中所有表的持久化類以及持久化類對應的映射文件均不需要修改,現(xiàn)將具體實現(xiàn)步驟羅列如下。1.完成配置文件hibernate.cfg.xml和perties的修改。2.創(chuàng)建名為CartProductSelect.java的測試類完成具體功能。12.5.3運行效果12.5.4案例解析細心的讀者在觀察上述運行結果時,會發(fā)現(xiàn)在第二次查詢出的結果中“張輝”購買的“雕牌洗衣粉”的記錄依然存在。這是因為第二次查詢是從查詢緩存中進行查詢的,因此直接顯示了第一次顯示的結果,此時將main方法中的“cp.delCart(”張輝“,”雕牌洗衣粉“);”語

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論