对象持久层的设计 对象持久层的设计

对象持久层的设计

  • 期刊名字:盐城工学院学报(自然科学版)
  • 文件大小:206kb
  • 论文作者:衡冬梅,唐拥政,朱跃龙
  • 作者单位:河海大学,盐城工学院
  • 更新时间:2020-11-03
  • 下载次数:
论文简介

第18卷第3期盐城工学院学报(自然科学版)Vol. 18 No. 32005年9月Journal of Y ancheng Institute of Technology( Natural Science)Jun.2005对象持久层的设计”衡冬梅',唐拥政”,朱跃龙'(1.河海大学计算机及信息工程学院,江苏南京210098;2. 盐城工学院现代教育技术中心,江苏盐城224003)摘要:描述了面向对 象应用与关系数据库之间对象持久层的设计,提出了针对基本维护性数据的改进持久层性能的方案,并分析了这种方案的可行性。关键词:持久层,性能.缓存镜像表中图分类号:TP311文献标识码:A文章编号:1671一5322(2005)03- 0045-04面向对象的数据库应用开发中一般有两种策.系统稍慢.因此本文主要讨论如何对持久层进行略,即基于面向对象的数据库的开发和基于关系合理设计来提高性能。数据库的开发凹。由于面向对象的数据库技术还对象持久层的框架设计不成熟,实际开发中大多还是采用基于关系数据库的策略。这样,就必须用持久层[2~8]实现面向持久化层实际.上就是封装了对象持久化功能对象数据库的操作,以处理关系数据库中各个表的一组类。目前较为流行的持久层框架有To-之间的错综复杂的关联关系。pLink ,Castor , OJB, Hibernate等,本文中设计的对象持久层的功能实现并不复杂,关键在于持久化层主要参考轻量级持久化框架Hibernate,建立对象模型和关系模型之间的映射和查询转实现对象持久化的基本功能,如类到数据库表的换,从设计模式和持久化框架不同的侧面来解决映射,还提供数据查询和获取数据的方法,该持久这个问题中]。对象持久层在实际应用中的难点在层的设计包含了6个大类。在表1中对这6个大于如何保证系统的性能,因为持久层在提高应用类功能做了具体描述。系统的可维护性、可扩展性和可移植性的同时,也.使用该持久层时,应用程序的程序员只需要存在这样的问题:对应用系统的性能有所影响,存知道PersistentTransaction, PersistentBroker提取数据时速度与效率会比原先直接使用SQL的供的接口就可以了。表1持久层类的描述Table 1 Description of the class of Persistent LayerPersistentObject 封装了使单个对象持久化所必须的行为,所有需要持久化的PersistentObject对象都要根据Persistent()bject的Operator的方法规则重载操作符。PersistentTransaction封装的对多个对象持久化的行为,包括多个对象的存Persis tentT ransaction储、更新、删除;并且封装了数据库事务操作的所需的行为。PersistentBroker是需要持久化的对象和持久化机制之间的连接,处理对象和PersistentBroker持久化机制之间的通信,提供存储,更新,删除,恢复等操作给用户,它是用户和持久化机制之间的桥梁。ClassMap .ClassMap是映射类,它的功能中国煤化工干奉中的库表。Sql类是封装了写库的sql语言更好的体现程序Sql类面向对象的特点,且模块化程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持久层性能优化Retrieve到员工类的一个员工对象employeel后,如要求显示部门名,就需要DepartmentEntity2.1 缓存镜像表的提出在一个公司信息管理系统中,员工表-部门表去Retrieve对应的部门departmentl,通过使用是关联表,员工表是DepartmentID关联部门表departmentl的Name属性显示部门名。这个过的主键。如图2所示。要求:显示员工名时,显示.程中进行了两次数据库访问,假设此员工表有5个关联的外键.那么一个员工的显示,将进行6次数据访问,则数据库访问的性能大打折扣。EmployeeDepartment对于这种情况,现有的持久层中的解决方案IDK是:在XML中配置5个one-to-many的映射NuneName关系,然后采用非Lazyloading(延迟加载)的方DepartmentID PK式进行-次性读取,这样就把6次的数据访问一次性执行了,但如果有N个人同时进行这样的操表2员工表-部门表中国煤化工常大,达到NX6次。Table 2 Employee- departmentMYHCNMH G可采用另一种更好的此员工所属部门名称。在传统非ORM模式下,方式解决。我们可以把这个部门表的内容放到缓可采用Select语句来读取.这种非ORM模式开存里,形成一个“缓存镜像表”,即数据库中实际表发的系统,系统扩展性、数据库移植性都比较差、的一个镜像,实时保持与实际表的同步,判断如开发效率质月数据下:第3期衡冬梅等:对象持久层的设计if(缓存中镜像表存在)DeleteCriteria._ ISaveInCache" ) >从缓存直接读取;< summary>else用于判断删除操作是否要保存在缓存{从数据库读取;false:不保存在缓存中。则每次都从建立缓存镜像表,把数据库中的数据放数据库读取,为默认值到缓存中,true :保存到缓存中,如果缓存中存在这样的方式可以减少很多的数据访问,就拿就直接从缓存中读取,对于基本数据建议使用此上面的例子来说,在第一个人进行了6次访问后,功能。对于频繁操作数据不推荐.这会导致大量以后的N个人执行,只要执行N次数据访问了,内存被占速度将会有一个突破性的提高。对于这种“缓存镜像表”的可行性我们先从数.同样的据库数据来分析。一个系统将包括很多的数据,< member name = "C: PersistenceLayer. In-我们可以对这些数据分一下类:sertCriteria. _ IsSaveInCache"> 用于判断插入操(1)维护型数据:这是指那些在系统中的基本作是否要保存在缓存.数据,比如前面的部门类型、客户类型、付款方式、member name = " C: PersistenceLayer.结算方式、销售类型、货币种类等等,这些数据存UpdateCriteria. IsSaveInCache">用于判断更新在的共同点是:数据量小、字段少、使用频率高、维操作是否要保存在缓存.护少。因此,具有这些特点的数据,我们就非常有在这个持久层中有个静态类,它的ArrayList理由放到内存中缓存起来。(2)操作型数据:这种数据的特点是数据量比里存放各种“缓存镜像表”的“镜像DataTable”,较大,字段也比较多,更改频繁,比如员工、客户等在进行Retrieve()时,先判断此ArrarList中是否存在此实体的“镜像”.如果有的话,则直接从此信息,不适合用到内存中。(3)日志型数据:这种数据数据量更多,比如“镜像DataTable”中Retrieve()出来, 还有Re-trieveCriteira(获取标准)时,会从此“镜像DataT-订单、订单明细、操作记录等,更不合适。able"中使用Select符合条件的,生成新的“镜像因此该方案主要是考虑“维护型数据”。DataTable”返回出来。实体在进行Save().De-2.3 缓存镜像表的可操作性分析在可行性分析后,我们要考虑,在实际操作起lete()和Update操作时都会进行“镜像DataT-来要注意哪些。关键在于“如何保持实时的镜像able”的同步更新。关系”,也就是要实时保持缓存中镜像与实际的数在应用中,要让实体保存到缓存中,只要在实据库表数据一致。那么我们就要保证在进行更新体的XML配置文件中指明ISaveToCache =(增,删,改)时能同时更新内存表数据就可以了,true即可。在OR Mapping时,我们标识一个实体为“需如:< class name = " DepartmentEntity" table保存为镜像”,那么持久层( PersistenceLayer)在进行此对象的Save()、Update(). Delete()时,自= " Department”database =”Oracle9i" Is-动进行“同步处理”,而且这是完全可以实现的。SaveToCache= " true">2.4缓存 镜像表的代码实现< 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 = .Name" type= "String" />< m瓦市数据ame =" C: PersistenceLayer.48●盐城工学院学报(自然科学版)第18卷多少"缓存镜像表"时,要考虑服务器的承受能力3总结的。但是,增加内存,提高性能这是开发过程中很从上我们可以看出.效率的提高建立在内存多客户所追求的。我们只要能仔细分析,是可以.的牺牲之.上,如果有过多"维护型数据"使用"缓存得出-种好的"缓存镜像表”的。镜像",整个内存消耗将非常大,所以,在考虑使用参考文献:[1]车敦仁,周立柱.关系数据库与面向对象数据库的集成[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]陈芒,陈洪亮.智能交通系统中的路径牵引算法[J]. 微型电脑应用,1999,15<6):45-46.[4]杨兆开,初连禹.动态路径诱导系统的研究进展[J].公路交通科技,2000,17(1):34- 38.[5]郑长江.动态交通分配方法及其初步应用研究[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:呀方数据- shortest path algorithm; replaceable route

论文截图
下一条:基坑支护设计
版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。