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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1什么是持久化幾乎所有的應用程序都需要持久化數(shù)據(jù)。持久化在應用程序開發(fā)中是基本概念之一。如果一個信息系統(tǒng)在斷電時沒有保存數(shù)據(jù),這個系統(tǒng)就沒有什么實用價值了。當我們在Java中談到持久化時,一般是指利用SQL在關(guān)系數(shù)據(jù)庫中存儲數(shù)據(jù)。我們先簡單地看看這項技術(shù),以及如何在Java中使用它。有了這個信息基礎(chǔ),再接著討論持久化,以及如何在面向?qū)ο蟮膽贸绦蛑袑崿F(xiàn)它。1關(guān)系數(shù)據(jù)庫就像大部分其他的開發(fā)人員一樣,你可能已經(jīng)使用過關(guān)系數(shù)據(jù)庫。我們大部分人

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

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

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

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

6、模型,以及像保證數(shù)據(jù)完整性的標準化這樣的話題,還要利用你的SQL知識調(diào)優(yōu)Hibernate應用程序的性能。Hibernate讓許多重復的編碼任務(wù)自動化,但是如果要利用現(xiàn)代SQL數(shù)據(jù)庫的全部功能,你的持久化技術(shù)必須擴充至超越Hibernate本身。記住,根本的目標是穩(wěn)健、高效的持久化數(shù)據(jù)管理。34面向?qū)ο髴贸绦蛑械某志没诿嫦驅(qū)ο蟮膽贸绦蛑校志没试S一個對象在創(chuàng)建之后依然存在。對象的這種狀態(tài)可以被保存到磁盤,且相同狀態(tài)的對象可以在未

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

8、數(shù)據(jù)的完整性;它們負責在多用戶和多應用程序之間共享數(shù)據(jù)。它們通過已經(jīng)利用約束實現(xiàn)的完整性規(guī)則來保證數(shù)據(jù)的完整性。數(shù)據(jù)庫管理系統(tǒng)提供數(shù)據(jù)級的安全性。當我們在本書中討論持久化時,考慮以下這些事情:結(jié)構(gòu)化數(shù)據(jù)的儲存、組織和獲取;并發(fā)性和數(shù)據(jù)完整性;數(shù)據(jù)共享。特別是,我們正在使用領(lǐng)域模型的面向?qū)ο蟮膽贸绦颦h(huán)境中考慮這些問題。使用領(lǐng)域模型的應用程序并不直接使用業(yè)務(wù)實體的表格式表示法;該應用程序有它自己的業(yè)務(wù)實體的面向?qū)ο竽P?。例如,如果一個在線

9、拍賣系統(tǒng)的數(shù)據(jù)庫有ITEM和BID表,Java應用程序就會定義Item和Bid類。然后,業(yè)務(wù)邏輯并不直接在SQL結(jié)果集的行和列上進行工作,而是與這個面向?qū)ο蟮念I(lǐng)域模型及其作為關(guān)聯(lián)對象網(wǎng)絡(luò)的運行時實現(xiàn)進行交互。Bid的每個實例都引用一個拍賣Item,而且每個Item都可以有一個對Bid實例的引用集合。業(yè)務(wù)邏輯并不在數(shù)據(jù)庫中執(zhí)行(作為SQL存儲過程);而是在應用層的Java中實現(xiàn)的。這就允許業(yè)務(wù)邏輯使用高級的面向?qū)ο蟮母拍?,例如繼承和多態(tài)。

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

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

溫馨提示

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

評論

0/150

提交評論