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