实体对象的高效遍历装置和方法

文档序号:9646443阅读:357来源:国知局
实体对象的高效遍历装置和方法
【专利说明】实体对象的高效遍历装置和方法
[0001]
技术领域
[0002]本发明涉及基于OR Mapping技术的实体框架遍历实体对象的技术领域,具体地,涉及一种实体对象的高效遍历装置和方法。
【背景技术】
[0003]在面向对象的软件开发领域,通过OR Mapping技术进行实体建模,可以让开发人员不必手写操作数据库的底层SQL语句,而是面向高层次的实体对象进行编码,由0RMapping框架负责自动生成合适的SQL语句。OR Mapping技术能够让开发者关注于业务对象及业务逻辑本身,而不必关注底层的数据库技术。同时,框架统一生成的SQL语句在绝大部分场景下具有很高的效率,可以很大程度规避由于开发人员良莠不齐而造成产品质量不稳定的问题。
[0004]在OR Mapping框架的控制范畴,除了实体对象的CRUD操作外,实体对象的遍历是一个很重要的领域。一般的OR Mapping框架,往往是通过返回实体对象集合或实体对象列表的形式,提供内存中的实体对象遍历机制。这种方案,在实体对象集合较小的情况下的确是非常高效的。但不幸的是,由于实体对象集合需要首先加载到内存中,若实体数据量偏大,加载全部实体对象的方案会很容易造成内存紧张,不仅自身效率下降,同时也会对系统整体的运行效率造成影响。
[0005]在对象遍历中,发现最常见的情形是一种单向的只读遍历。对于这种常见情景,底层的数据库驱动程序往往提供了高效的解决方案。例如.Net平台,在Ad0.net中提供了DataReader对象,通过内部维护一个数据库游标,高效地解决了单向遍历的问题。但是,如果直接让开发者使用DataReader这种底层技术,固然可以解决效率问题,但会丧失面向实体对象编程的各种好处。

【发明内容】

[0006]本发明的目的在于,针对上述问题,提出一种实体对象的高效遍历装置和方法,以实现在大数据量的情况下,控制遍历实体对象的内存开销,同时做到高效的优点。
[0007]为实现上述目的,本发明采用的技术方案是:
一种实体对象的高效遍历装置,包括类生成模块和对象聚合模块;
所述类生成模块:定义类;
所述对象聚合模块:将DataReader对象和0bjectBuilder对象聚合到上述定义的类中,且通过所述DataReader对象进行真正的数据库遍历动作,通过0bjectBuilder对象将DataReader对象遍历时所访问的当前记录转换为对应的实体对象。
[0008]优选的,所述类生成模块定义的类为EntityDataReader类。
[0009]优选的,所述类包括, CurrentEntity属性:代表遍历对象集合时,遍历指针指向的当前实体对象;
Read函数:读取下一条记录,若已到数据集合的末尾,则返回空;
Close 函数:关闭 EntityDataReader ;
Dispose 函数:释放 EntityDataReader,并支持 IDisposable 接口。
[0010]优选的,所述ObjectBuilder对象转换的实体对象通过CurrentEntity属性供外部调用。
[0011]同时本发明技术方案提供一种实体对象的高效遍历方法,包括:
定义类的步骤;
在类的内部聚合了一个DataReader对象和一个Ob jectBui lder对象,通过DataReader对象进行真正的数据库遍历动作,通过ObjectBuilder对象将DataReader对象遍历时所访问的当前记录转换为对应的实体对象的步骤。
[0012]优选的,所述类生成模块定义的类为EntityDataReader类。
[0013]优选的,所述类包括,
CurrentEntity属性:代表遍历对象集合时,遍历指针指向的当前实体对象;
Read函数:读取下一条记录,若已到数据集合的末尾,则返回空;
Close 函数:关闭 EntityDataReader ;
Dispose 函数:释放 EntityDataReader,并支持 IDisposable 接口。
[0014]优选的,所述ObjectBuilder对象转换的实体对象通过CurrentEntity属性供外部调用。
[0015]本发明的技术方案具有以下有益效果:
1、遍历过程中的内存开销始终只为一个实体对象的大小,不再有大数据集情况下的内存压力问题。
[0016]2、通过委托DataReader对象完成实际的数据库遍历操作,做到了遍历过程的高效。
[0017]3、编程接口保持为面向实体对象编程,开发者可以依然享受面向实体对象编程的各种好处。
[0018]简言之,EntityDataReader实现了在控制内存开销的情况下,将面向实体对象的编程和DataReader高效遍历特性完美结合。达到在大数据量的情况下,控制遍历实体对象的内存开销,同时做到高效的目的。
[0019]下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
【附图说明】
[0020]图1为本发明实施例所述的实体对象的高效遍历装置的原理框图;
图2为本发明实施例所述的EntityDataReader类的示意图;
图3为本发明实施例所述的实体对象的高效遍历方法的应用流程图。
【具体实施方式】
[0021]以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0022]如图1所示,一种实体对象的高效遍历装置,包括类生成模块和对象聚合模块; 类生成模块:定义类;
对象聚合模块:将DataReader对象和ObjectBuilder对象聚合到定义的类中,且通过所述DataReader对象进行真正的数据库遍历动作,通过ObjectBuilder对象将DataReader对象遍历时所访问的当前记录转换为对应的实体对象。
[0023]其中,类生成模块定义的类为EntityDataReader类。
[0024]类包括,
CurrentEntity属性:代表遍历对象集合时,遍历指针指向的当前实体对象;
Read函数:读取下一条记录,若已到数据集合的末尾,则返回空;
Close 函数:关闭 EntityDataReader ;
Dispose 函数:释放 EntityDataReader,并支持 IDi
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1