[发明专利]内存对象加载装置和内存对象加载方法有效
申请号: | 201210371093.X | 申请日: | 2012-09-28 |
公开(公告)号: | CN102902565A | 公开(公告)日: | 2013-01-30 |
发明(设计)人: | 周运禄 | 申请(专利权)人: | 用友软件股份有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 北京友联知识产权代理事务所(普通合伙) 11343 | 代理人: | 尚志峰;汪海屏 |
地址: | 100094 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 内存 对象 加载 装置 方法 | ||
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种内存对象加载装置和一种内存对象加载方法。
背景技术
现代管理系统多采用数据访问层的方式,通过ORMapping进行内存实体对象的加载和持久化。这种方式带来的好处是:内存对象与存储系统之间有一层数据访问层,解耦了实体对象与存储系统,便于实现存储系统无关的系统。同时,业务逻辑层完全面向对象,其内存对象具有完整的现实世界对象的完整概念,代码可读性和易维护性都更强。目前的对象加载是一种全字段映射的加载,即为了从存储系统加载一个实体对象,会不论场景加载其所有字段。而特定场景对一个对象的访问,往往只需要访问其部分属性。这就造成了属性字段的冗余加载,冗余加载的属性从时间上和空间上都是对特定场景系统性能的浪费。例如,销售订单有100个字段(F1~F100),销售订单提交场景需要访问其中30个字段(F1~F30),销售订单审核需要访问40个字段(F11~F40),而采用目前的加载方式都会加载100个字段。
为避免属性冗余加载,目前的处理主要方式有:(1)直接访问存储系统(如SQL查询的方式),加载相应的数据信息。这种方式加载的数据是非结构化的,打破了对象的完整定义。(2)定义原始对象类的子属性集合的类,并建立新的映射关系。这种方式,需要定义大量的子属性集的类。同时,上述两种方式在特定场景的不同分支时,都需要修改代码。例如销售订单提交场景,分支1需要访问30个字段,而在新加分支2需要访问31个字段时,方式(1)需要调整SQL查询;而方式(2)需要调整子属性集合的类定义。
因此,需要一种内存对象加载技术,能够避免属性冗余加载,提升系统性能。
发明内容
本发明正是基于上述问题,提出了一种内存对象加载技术,能够避免属性冗余加载,实现简易。
有鉴于此,根据本发明的一个方面,提供了一种内存对象加载装置,包括:读取单元,在需从存储系统加载实体对象时,读取预设的属性加载关系,其中所述属性加载对应关系包括:不同场景与所述实体对象在所述不同场景下的属性的对应关系;加载单元,根据当前场景的所述属性加载对应关系,从所述存储系统中获取所述实体对象在所述当前场景下的属性的属性值,以完成所述实体对象的加载。
预设了属性加载关系。在不同场景下,相同的实体对象具有不同的加载方案(即前述属性加载关系的方案)。在当前场景下,可读取与当前场景和当前实体对象类型相对应的加载方案,根据加载方案仅加载需要加载的属性的属性值,而不加载非必要属性的属性值,这样就避免了冗余属性的加载,节约了内存空间的占用。
在上述技术方案中,优选的,所述读取单元读取的所述属性加载对应关系包括主数据关系和明细关系,所述主数据关系包括实体对象标识、实体对象类型、场景和是否采用虚加载属性之间的对应关系,所述明细关系包括实体对象标识、属性和是否加载属性之间的对应关系。
虚加载属性即是否要进行本发明的加载方案,若虚加载属性为是,则仅加载需要的属性的属性值,若虚加载属性为否,则按照相关技术进行属性的全部加载。
在上述技术方案中,优选的,所述加载单元还用于在访问所述实体对象中的属性时,若被访问的属性未加载相应的属性值,则补充加载所述实体对象中所有未加载的属性的属性值。
如果本次访问的属性超出了上次访问的属性的最大范围,则需将所有未加载的属性值均加载,以便能够访问到所有属性的属性值,避免发生访问错误。
在上述技术方案中,优选的,所述加载单元包括:标记子单元,为所述所有未加载的属性中被访问的属性添加完善标记;更新子单元,根据所述完善标记更新所述属性加载对应关系,将所述实体对象中标记有所述完善标记的属性的是否加载属性设置为是。
由于本次访问超出了上次访问的属性的最大范围,因此需要更新属性的访问范围,将超出部分的属性对应的虚加载属性设置为是,完成属性加载对应关系的更新,逐步完善属性加载对应关系的明细数据。这样在下次访问时,可同时加载该超出部分的属性的属性值,在保证访问正确的同时,也保证从存储系统中读取尽可能少的信息。
在上述技术方案中,优选的,所述加载单元还用于在所述实体对象的虚加载属性为否时,从所述存储系统中获取所述实体对象的所有属性的属性值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于用友软件股份有限公司,未经用友软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210371093.X/2.html,转载请声明来源钻瓜专利网。