什么是持久化_第1頁
已閱讀1頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1什么是持久化幾乎所有的應用程序都需要持久化數據。持久化在應用程序開發(fā)中是基本概念之一。如果一個信息系統在斷電時沒有保存數據,這個系統就沒有什么實用價值了。當我們在Java中談到持久化時,一般是指利用SQL在關系數據庫中存儲數據。我們先簡單地看看這項技術,以及如何在Java中使用它。有了這個信息基礎,再接著討論持久化,以及如何在面向對象的應用程序中實現它。1關系數據庫就像大部分其他的開發(fā)人員一樣,你可能已經使用過關系數據庫。我們大部分人

2、每天都在使用關系數據庫。關系技術是個已知數,僅此一點就成為許多組織選擇它的一個充分理由。但是只提這一點有些貶低了它應得的尊重。關系數據庫的地位如此根深蒂固,是因為它們是一種出奇靈活和穩(wěn)健的數據管理方法。由于關系數據模型完整且一致的理論基礎,關系數據庫可以有效保證和保護數據的完整性,這是它眾多的優(yōu)良特性之一。有些人甚至會說計算領域的最后一項大發(fā)明就是用于數據管理的關系概念,它由E.FCodd(Codd,1970)于30多年前首先提出。關系

3、數據庫管理系統既不特定于Java,也不是一種特定于某個特殊應用程序的關系數據庫。這個重要的原理就是數據獨立(dataindependence)。換句話說,我們無法充分強調這個重要的事實:數據比任何應用程序都存在得更長久。關系技術提供了一種在不同應用程序或者構成同一應用程序(例如事務引擎和報告引擎)的不同技術之間共享數據的方式。關系技術是許多異構的系統和技術平臺的一個共同特性。因此,關系型數據模型經常是業(yè)務實體常用的企業(yè)級表示法。關系數據

4、庫管理系統具有基于SQL的應用編程接口(ApplicationProgrammingInterface,API);因此,我們稱當今的關系數據庫產品為SQL數據庫管理系統(databasemanagementsystem),或者當我們談到特定系統時,稱之為SQL數據庫(database)。在更詳細地探討SQL數據庫應用程序方面之前,必須提到一個重要的問題:雖然有些產品也作為關系數據庫銷售,但是只提供SQL數據語言接口的數據庫系統并不是真正

5、的關系數據庫,并且在很多方面甚至與原始概念相去甚遠。自然,這樣就導致了混亂。SQL從業(yè)者抱怨關系型數據模型在SQL語言方面的不足,而關系型數據管理專家則報怨SQL標準在關系模型和理念方面實現得不夠。應用程序開發(fā)人員被夾在其中,承受著傳送一些有效東西的壓力。我們將在本書中始終強調有關這個問題的一些重要而有意義的方面,但是通常關注應用程序方面的。2理解SQL要有效地使用Hibernate,扎實地理解關系模型和SQL是前提條件。你需要理解關系

6、模型,以及像保證數據完整性的標準化這樣的話題,還要利用你的SQL知識調優(yōu)Hibernate應用程序的性能。Hibernate讓許多重復的編碼任務自動化,但是如果要利用現代SQL數據庫的全部功能,你的持久化技術必須擴充至超越Hibernate本身。記住,根本的目標是穩(wěn)健、高效的持久化數據管理。34面向對象應用程序中的持久化在面向對象的應用程序中,持久化允許一個對象在創(chuàng)建之后依然存在。對象的這種狀態(tài)可以被保存到磁盤,且相同狀態(tài)的對象可以在未

7、來的某個時候被重新創(chuàng)建。這并非只限于單獨的對象——整個關聯對象網絡也可以被持久化,且以后在一個新的進程中被重新創(chuàng)建。大多數對象并不是持化久的;瞬時(transient)對象的生命周期有限,由實例化它的進程的壽命所決定。幾乎所有的Java應用程序都混合包含了持久對象和瞬時對象;因此,我們需要一個子系統來管理持久化數據?,F代的關系數據庫為持久化數據提供了一個結構化的表示法,能夠對數據進行操作、排序、搜索和統計。數據庫管理系統負責管理并發(fā)性和

8、數據的完整性;它們負責在多用戶和多應用程序之間共享數據。它們通過已經利用約束實現的完整性規(guī)則來保證數據的完整性。數據庫管理系統提供數據級的安全性。當我們在本書中討論持久化時,考慮以下這些事情:結構化數據的儲存、組織和獲??;并發(fā)性和數據完整性;數據共享。特別是,我們正在使用領域模型的面向對象的應用程序環(huán)境中考慮這些問題。使用領域模型的應用程序并不直接使用業(yè)務實體的表格式表示法;該應用程序有它自己的業(yè)務實體的面向對象模型。例如,如果一個在線

9、拍賣系統的數據庫有ITEM和BID表,Java應用程序就會定義Item和Bid類。然后,業(yè)務邏輯并不直接在SQL結果集的行和列上進行工作,而是與這個面向對象的領域模型及其作為關聯對象網絡的運行時實現進行交互。Bid的每個實例都引用一個拍賣Item,而且每個Item都可以有一個對Bid實例的引用集合。業(yè)務邏輯并不在數據庫中執(zhí)行(作為SQL存儲過程);而是在應用層的Java中實現的。這就允許業(yè)務邏輯使用高級的面向對象的概念,例如繼承和多態(tài)。

10、比如,我們可以使用眾所周知的設計模式,如Strategy(策略)、Mediat(中介者)和Composite(組合)(Gamma等,1995),所有這些模式都依賴于多態(tài)的方法調用?,F在給你一個警告:并非所有的Java應用程序都以這種方式設計,它們也不應該只以這種方式設計。簡單的應用程序不用領域模型可能更好。復雜的應用程序可能必須重用現有的存儲過程。SQL和JDBCAPI對于純表格式數據的處理堪稱完美,并且JDBC的行集合(RowSet)

11、使CRUD操作變得更容易了。使用持久化數據的表格式表示法很直接且易于理解。然而,對于含有重要業(yè)務邏輯的應用程序來說,領域模型方法幫助明顯改善代碼的可重用性和可維護性。實際上,這兩種策略都是常用和必需的。許多應用程序都需要執(zhí)行修改大組數據、接近數據的過程。同時,在應用層中執(zhí)行一般在線事務處理邏輯的面向對象的領域模型時,其他的應用程序模塊可以從中受益。你需要一種有效地把持久化數據帶近應用程序代碼的方法。如果我們再次考慮SQL和關系數據庫,最

溫馨提示

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

評論

0/150

提交評論