這里本來(lái)應(yīng)該有張描述應(yīng)用程序結(jié)構(gòu)演變的圖,可是CSDN在這里上傳不了,所以沒(méi)有傳上來(lái).
縱觀幾十年的計(jì)算機(jī)應(yīng)用軟件的演變過(guò)程,應(yīng)用程序逐漸由單層體系結(jié)構(gòu)發(fā)展為多層體系結(jié)構(gòu)。最初應(yīng)用軟件只是在大型機(jī)上的單層應(yīng)用程序,大都采用文件系統(tǒng)存儲(chǔ)數(shù)據(jù)。20世紀(jì)70年代,隨著數(shù)據(jù)庫(kù)的普及,原來(lái)的單層結(jié)構(gòu)發(fā)展為雙層結(jié)構(gòu)。在雙層結(jié)構(gòu)中,實(shí)現(xiàn)了數(shù)據(jù)存放與應(yīng)用程序的分離。但是,負(fù)責(zé)用戶(hù)界面交互的代碼與業(yè)務(wù)邏輯混雜在一起,一個(gè)小的系統(tǒng)尚可以維護(hù)但是對(duì)于企業(yè)級(jí)的應(yīng)用,長(zhǎng)期的維護(hù)就是一件十分困難的事情。因此,三層的體系結(jié)構(gòu)應(yīng)運(yùn)而生。在三層結(jié)構(gòu)中,把原來(lái)的應(yīng)用程序?qū)臃殖闪艘晥D層和業(yè)務(wù)邏輯層、數(shù)據(jù)庫(kù)層維持不變。隨著軟件行業(yè)的蓬勃發(fā)展,人們感覺(jué)這樣頻繁的操作數(shù)據(jù)庫(kù)和大量的底層代碼的重復(fù)書(shū)寫(xiě)極大的浪費(fèi)了程序人員的心血,Hibernate,Spring,等框架的應(yīng)運(yùn)而生了。 在Hibernate中又將原來(lái)原業(yè)務(wù)邏輯層分成了業(yè)務(wù)邏輯層和持久層。(現(xiàn)在主流的分層結(jié)構(gòu)依然是三層結(jié)構(gòu)). 2.什么是持久化? 為什么要持久化? 1.什么是持久化?本人找了好多文章都沒(méi)有找到滿意的答案,最后是從孫衛(wèi)琴寫(xiě)的《精通Hibernate:Java對(duì)象持久化技術(shù)詳解》中,看到如下的解釋?zhuān)杏X(jué)還是比較完整的。摘抄如下: 狹義的理解: “持久化”僅僅指把域?qū)ο笥谰帽4娴綌?shù)據(jù)庫(kù)中;廣義的理解,“持久化”包括和數(shù)據(jù)庫(kù)相關(guān)的各種操作。 ● 保存:把域?qū)ο笥谰帽4娴綌?shù)據(jù)庫(kù)。 ● 更新:更新數(shù)據(jù)庫(kù)中域?qū)ο蟮臓顟B(tài)。 ● 刪除:從數(shù)據(jù)庫(kù)中刪除一個(gè)域?qū)ο蟆?/font> ● 加載:根據(jù)特定的OID,把一個(gè)域?qū)ο髲臄?shù)據(jù)庫(kù)加載到內(nèi)存。 ● 查詢(xún):根據(jù)特定的查詢(xún)條件,把符合查詢(xún)條件的一個(gè)或多個(gè)域?qū)ο髲臄?shù)據(jù)庫(kù)加載內(nèi)在存中。 2.為什么要持久化?持久化技術(shù)封裝了數(shù)據(jù)訪問(wèn)細(xì)節(jié),為大部分業(yè)務(wù)邏輯提供面向?qū)ο蟮?span lang=EN-US>API。 ● 通過(guò)持久化技術(shù)可以減少訪問(wèn)數(shù)據(jù)庫(kù)數(shù)據(jù)次數(shù),增加應(yīng)用程序執(zhí)行速度; ● 代碼重用性高,能夠完成大部分?jǐn)?shù)據(jù)庫(kù)操作; ● 松散耦合,使持久化不依賴(lài)于底層數(shù)據(jù)庫(kù)和上層業(yè)務(wù)邏輯實(shí)現(xiàn),更換數(shù)據(jù)庫(kù)時(shí)只需修改配置文件而不用修改代碼 |
|
來(lái)自: jimmylin88cn > 《持久化》