對象持久層的設計
- 期刊名字:鹽城工學院學報(自然科學版)
- 文件大小:206kb
- 論文作者:衡冬梅,唐擁政,朱躍龍
- 作者單位:河海大學,鹽城工學院
- 更新時間:2020-11-03
- 下載次數(shù):次
第18卷第3期鹽城工學院學報(自然科學版)Vol. 18 No. 32005年9月Journal of Y ancheng Institute of Technology( Natural Science)Jun.2005對象持久層的設計”衡冬梅',唐擁政”,朱躍龍'(1.河海大學計算機及信息工程學院,江蘇南京210098;2. 鹽城工學院現(xiàn)代教育技術中心,江蘇鹽城224003)摘要:描述了面向?qū)?象應用與關系數(shù)據(jù)庫之間對象持久層的設計,提出了針對基本維護性數(shù)據(jù)的改進持久層性能的方案,并分析了這種方案的可行性。關鍵詞:持久層,性能.緩存鏡像表中圖分類號:TP311文獻標識碼:A文章編號:1671一5322(2005)03- 0045-04面向?qū)ο蟮臄?shù)據(jù)庫應用開發(fā)中一般有兩種策.系統(tǒng)稍慢.因此本文主要討論如何對持久層進行略,即基于面向?qū)ο蟮臄?shù)據(jù)庫的開發(fā)和基于關系合理設計來提高性能。數(shù)據(jù)庫的開發(fā)凹。由于面向?qū)ο蟮臄?shù)據(jù)庫技術還對象持久層的框架設計不成熟,實際開發(fā)中大多還是采用基于關系數(shù)據(jù)庫的策略。這樣,就必須用持久層[2~8]實現(xiàn)面向持久化層實際.上就是封裝了對象持久化功能對象數(shù)據(jù)庫的操作,以處理關系數(shù)據(jù)庫中各個表的一組類。目前較為流行的持久層框架有To-之間的錯綜復雜的關聯(lián)關系。pLink ,Castor , OJB, Hibernate等,本文中設計的對象持久層的功能實現(xiàn)并不復雜,關鍵在于持久化層主要參考輕量級持久化框架Hibernate,建立對象模型和關系模型之間的映射和查詢轉(zhuǎn)實現(xiàn)對象持久化的基本功能,如類到數(shù)據(jù)庫表的換,從設計模式和持久化框架不同的側面來解決映射,還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,該持久這個問題中]。對象持久層在實際應用中的難點在層的設計包含了6個大類。在表1中對這6個大于如何保證系統(tǒng)的性能,因為持久層在提高應用類功能做了具體描述。系統(tǒng)的可維護性、可擴展性和可移植性的同時,也.使用該持久層時,應用程序的程序員只需要存在這樣的問題:對應用系統(tǒng)的性能有所影響,存知道PersistentTransaction, PersistentBroker提取數(shù)據(jù)時速度與效率會比原先直接使用SQL的供的接口就可以了。表1持久層類的描述Table 1 Description of the class of Persistent LayerPersistentObject 封裝了使單個對象持久化所必須的行為,所有需要持久化的PersistentObject對象都要根據(jù)Persistent()bject的Operator的方法規(guī)則重載操作符。PersistentTransaction封裝的對多個對象持久化的行為,包括多個對象的存Persis tentT ransaction儲、更新、刪除;并且封裝了數(shù)據(jù)庫事務操作的所需的行為。PersistentBroker是需要持久化的對象和持久化機制之間的連接,處理對象和PersistentBroker持久化機制之間的通信,提供存儲,更新,刪除,恢復等操作給用戶,它是用戶和持久化機制之間的橋梁。ClassMap .ClassMap是映射類,它的功能中國煤化工干奉中的庫表。Sql類是封裝了寫庫的sql語言更好的體現(xiàn)程序Sql類面向?qū)ο蟮奶攸c,且模塊化程IHCNMHGPersis tentMechanimPersistentMechanim封裝了對持久化機制的操作方法收稿日期:2005-07-11作者衙?衡冬梅(1981-),女,江蘇建湖縣人,河海大學計算機及信息工程學院碩士研究生。46●鹽城工學院學報(自然科學版)第18卷Persistant Transactlonfprocess Thans action()◆retry()◆addTransactionIOadds aveObJectso1 addRetrlevaObjectso1... addUpdateObjects(rollback0process by1..11ParsistentObjectpersistentBrokerintCName : String電ng aveObjectoprocoss byClassMapolaClassPersistent: Bool process by. deleteObjectoIsOblectPersistent : 30011.. 7 VretrieveObjocto正AtribureMapoTimeStamp : time◆updateObjocto◆TableMapO. procossTra insactlonooperator0proces: Sql01..10..1creat 110m8ql,Insorto. update(. 、connect0...PersistantMecharismBbconnoction9DBnameG buser| Opas swordOopen(圖1持久化層的框架設計Fig. 1 The design of the framework of Persistent Layer在ORM模式下,這兩個表映射為Employ-eeEntity員工類與DepartmentEntity部門類。當2持久層性能優(yōu)化Retrieve到員工類的一個員工對象employeel后,如要求顯示部門名,就需要DepartmentEntity2.1 緩存鏡像表的提出在一個公司信息管理系統(tǒng)中,員工表-部門表去Retrieve對應的部門departmentl,通過使用是關聯(lián)表,員工表是DepartmentID關聯(lián)部門表departmentl的Name屬性顯示部門名。這個過的主鍵。如圖2所示。要求:顯示員工名時,顯示.程中進行了兩次數(shù)據(jù)庫訪問,假設此員工表有5個關聯(lián)的外鍵.那么一個員工的顯示,將進行6次數(shù)據(jù)訪問,則數(shù)據(jù)庫訪問的性能大打折扣。EmployeeDepartment對于這種情況,現(xiàn)有的持久層中的解決方案IDK是:在XML中配置5個one-to-many的映射NuneName關系,然后采用非Lazyloading(延遲加載)的方DepartmentID PK式進行-次性讀取,這樣就把6次的數(shù)據(jù)訪問一次性執(zhí)行了,但如果有N個人同時進行這樣的操表2員工表-部門表中國煤化工常大,達到NX6次。Table 2 Employee- departmentMYHCNMH G可采用另一種更好的此員工所屬部門名稱。在傳統(tǒng)非ORM模式下,方式解決。我們可以把這個部門表的內(nèi)容放到緩可采用Select語句來讀取.這種非ORM模式開存里,形成一個“緩存鏡像表”,即數(shù)據(jù)庫中實際表發(fā)的系統(tǒng),系統(tǒng)擴展性、數(shù)據(jù)庫移植性都比較差、的一個鏡像,實時保持與實際表的同步,判斷如開發(fā)效率質(zhì)月數(shù)據(jù)下:第3期衡冬梅等:對象持久層的設計if(緩存中鏡像表存在)DeleteCriteria._ ISaveInCache" ) >從緩存直接讀取;< summary>else用于判斷刪除操作是否要保存在緩存{從數(shù)據(jù)庫讀取;false:不保存在緩存中。則每次都從建立緩存鏡像表,把數(shù)據(jù)庫中的數(shù)據(jù)放數(shù)據(jù)庫讀取,為默認值到緩存中,true :保存到緩存中,如果緩存中存在這樣的方式可以減少很多的數(shù)據(jù)訪問,就拿就直接從緩存中讀取,對于基本數(shù)據(jù)建議使用此上面的例子來說,在第一個人進行了6次訪問后,功能。對于頻繁操作數(shù)據(jù)不推薦.這會導致大量以后的N個人執(zhí)行,只要執(zhí)行N次數(shù)據(jù)訪問了,內(nèi)存被占速度將會有一個突破性的提高。對于這種“緩存鏡像表”的可行性我們先從數(shù).同樣的據(jù)庫數(shù)據(jù)來分析。一個系統(tǒng)將包括很多的數(shù)據(jù),< member name = "C: PersistenceLayer. In-我們可以對這些數(shù)據(jù)分一下類:sertCriteria. _ IsSaveInCache"> 用于判斷插入操(1)維護型數(shù)據(jù):這是指那些在系統(tǒng)中的基本作是否要保存在緩存.數(shù)據(jù),比如前面的部門類型、客戶類型、付款方式、member name = " C: PersistenceLayer.結算方式、銷售類型、貨幣種類等等,這些數(shù)據(jù)存UpdateCriteria. IsSaveInCache">用于判斷更新在的共同點是:數(shù)據(jù)量小、字段少、使用頻率高、維操作是否要保存在緩存.護少。因此,具有這些特點的數(shù)據(jù),我們就非常有在這個持久層中有個靜態(tài)類,它的ArrayList理由放到內(nèi)存中緩存起來。(2)操作型數(shù)據(jù):這種數(shù)據(jù)的特點是數(shù)據(jù)量比里存放各種“緩存鏡像表”的“鏡像DataTable”,較大,字段也比較多,更改頻繁,比如員工、客戶等在進行Retrieve()時,先判斷此ArrarList中是否存在此實體的“鏡像”.如果有的話,則直接從此信息,不適合用到內(nèi)存中。(3)日志型數(shù)據(jù):這種數(shù)據(jù)數(shù)據(jù)量更多,比如“鏡像DataTable”中Retrieve()出來, 還有Re-trieveCriteira(獲取標準)時,會從此“鏡像DataT-訂單、訂單明細、操作記錄等,更不合適。able"中使用Select符合條件的,生成新的“鏡像因此該方案主要是考慮“維護型數(shù)據(jù)”。DataTable”返回出來。實體在進行Save().De-2.3 緩存鏡像表的可操作性分析在可行性分析后,我們要考慮,在實際操作起lete()和Update操作時都會進行“鏡像DataT-來要注意哪些。關鍵在于“如何保持實時的鏡像able”的同步更新。關系”,也就是要實時保持緩存中鏡像與實際的數(shù)在應用中,要讓實體保存到緩存中,只要在實據(jù)庫表數(shù)據(jù)一致。那么我們就要保證在進行更新體的XML配置文件中指明ISaveToCache =(增,刪,改)時能同時更新內(nèi)存表數(shù)據(jù)就可以了,true即可。在OR Mapping時,我們標識一個實體為“需如:< class name = " DepartmentEntity" table保存為鏡像”,那么持久層( PersistenceLayer)在進行此對象的Save()、Update(). Delete()時,自= " Department”database =”O(jiān)racle9i" Is-動進行“同步處理”,而且這是完全可以實現(xiàn)的。SaveToCache= " true">2.4緩存 鏡像表的代碼實現(xiàn)< attribute name="Id" column= " Id"在實體類的定義中增加代碼:type= " Integer" increment= "true" key= " pri-< member name = " C: PersistenceLayer. .中國煤化工ClassMap. . IsSaveInCache'YHCNMHGNo"column="No"< summary>用于判斷此實體是否要保type= "String" key= " primary" />存到緩存中< attribute name = " Name" column = . member>Name" type= "String" />< m瓦市數(shù)據(jù)ame =" C: PersistenceLayer.48●鹽城工學院學報(自然科學版)第18卷多少"緩存鏡像表"時,要考慮服務器的承受能力3總結的。但是,增加內(nèi)存,提高性能這是開發(fā)過程中很從上我們可以看出.效率的提高建立在內(nèi)存多客戶所追求的。我們只要能仔細分析,是可以.的犧牲之.上,如果有過多"維護型數(shù)據(jù)"使用"緩存得出-種好的"緩存鏡像表”的。鏡像",整個內(nèi)存消耗將非常大,所以,在考慮使用參考文獻:[1]車敦仁,周立柱.關系數(shù)據(jù)庫與面向?qū)ο髷?shù)據(jù)庫的集成[J]. 軟件學報,1996 ,7(11): 669-675.[2] Scott W Ambler. Process Patterns- Building Large- - Scale Systems Using Object Technology[ M]. Cambridge:Cam-bridge University Press, 1998.[3] Scott W. Ambler. The Object Primer 2nd Edition[ M]. Cambridge:Cambridge University Press, 2001.[4]朱慶偉,吳宇紅,-種對象/關系映射框架的分析和應用[J].電子科技,2004(1): 54-57.Design of Object Persistent LayerHENG Dong - meil ,TANG Yong - zheng' ,ZHU Yue- long'/1. College of Computer and Information Engineering of HoHai University, Jiangsu Nanjing 210098 ,China\ 2. Modern Educational Technology Center, Yancheng Institute of Technology, Jiangsu Yancheng,224003, China/Abstract: This paper describes the design of an object persistent layer , which is a middle ware between object- orientedapplication and RDBMS. The authon proposes one solution to the improvement of the obiect persistence layer, which fo-cuses on basic attendance data, and analyses the feasibility of this solution.Keywords: persistent layer, capability, cache mirror table(上接第25頁)[1] YANG Qun, ZHAO Yanan, A fuzzy logic - based framework for voute choice in vehicole navigation systems [J].Journal of Systens Science and Systems Engineering ,2000.9(4):467- 474.[2] Shier RD. ON algorithms for finding the K Shortest paths in a metwork [J]. Networks, 1979 ,9(9):195- 214.[3]陳芒,陳洪亮.智能交通系統(tǒng)中的路徑牽引算法[J]. 微型電腦應用,1999,15<6):45-46.[4]楊兆開,初連禹.動態(tài)路徑誘導系統(tǒng)的研究進展[J].公路交通科技,2000,17(1):34- 38.[5]鄭長江.動態(tài)交通分配方法及其初步應用研究[D].南京:東南大學,2000.Study on Replaceable Route Choice ApproachCHENG Yang, WANG Bo(School of Management , Shanghai Science and Technology University, Shanghai 2 10000 ,China)中國煤化工,Abstract: The study on Pynamic Route Gvidance System( DRGS)eld of Intelligent Trans-portation System(ITS). The core of the study is to find a "best I.MYHc N M H Ghe crretrt taff ifom-tion. As a result the travel time can be saved and the traffic congestion can be avoided. This method can give drivers a sin-gle "optimal" path to follow. After the adoption of the improved K- shortest path algorithm, we can offer a number ofroutes with different features to drivers , which will tally with the as tual situation better.Keywords:呀方數(shù)據(jù)- shortest path algorithm; replaceable route
-
C4烯烴制丙烯催化劑 2020-11-03
-
煤基聚乙醇酸技術進展 2020-11-03
-
生物質(zhì)能的應用工程 2020-11-03
-
我國甲醇工業(yè)現(xiàn)狀 2020-11-03
-
JB/T 11699-2013 高處作業(yè)吊籃安裝、拆卸、使用技術規(guī)程 2020-11-03
-
石油化工設備腐蝕與防護參考書十本免費下載,絕版珍藏 2020-11-03
-
四噴嘴水煤漿氣化爐工業(yè)應用情況簡介 2020-11-03
-
Lurgi和ICI低壓甲醇合成工藝比較 2020-11-03
-
甲醇制芳烴研究進展 2020-11-03
-
精甲醇及MTO級甲醇精餾工藝技術進展 2020-11-03




