实体对象的创建方法和实体对象创建装置的制作方法

文档序号:6430788阅读:156来源:国知局
专利名称:实体对象的创建方法和实体对象创建装置的制作方法
技术领域
本发明涉及面向对象的软件开发领域,尤其涉及实体对象的创建方法和实体对象
创建装置。
背景技术
面向对象是当前主流的软件开发方法之一。在面向对象的系统中,实体对象用来表示现实世界中具体的业务实体,软件系统中数据的持久化,业务过程的执行和用户界面都与实体对象有关,例如在Java平台中,通常使用POJO (普通JAVA对象,Plain Ordinary Java Objects)对象或EJB中的实体Bean来表示实体对象。在目前常规的面向对象软件开发方法中,对于实体对象,一般在设计期由开发人员开发实体对象的代码,并在软件系统的其他部分调用,这样使整个系统具备了实体对象的相关性,使软件系统的通用性降低。在考虑软件系统的通用性方面的问题时,现有的技术主要着眼于实体对象的动态加载,以及实体对象之间关系的动态配置,这些方法能解决软件系统通用性方面的一部分问题,但实体对象源代码仍然需要由开发人员在设计期进行开发,当实体对象在运行期发生变更时,需要在设计期重新对实体对象源代码进行开发,从而增加了软件系统的开发成本,减小了软件系统的使用寿命。

发明内容
本发明实施例提供一种实体对象的创建方法和实体对象创建装置,能够减小软件系统的开发成本,增加软件系统的使用寿命。本发明一方面提供一种实体对象的创建方法,包括存储描述实体对象的元数据; 在软件系统的运行期,根据模板、元数据和基类生成实体对象的源代码,所述模板表示实体对象源代码的生成策略;将所述源代码编译成实体对象的字节码;加载所述实体对象的字节码,并对所述实体对象的字节码中所定义的类实例化,以完成实体对象的创建。本发明另一方面提供一种实体对象创建装置,包括存储单元,用于存储描述实体对象的元数据;源代码生成单元,用于在软件系统的运行期,根据模板、元数据和基类生成实体对象的源代码,所述模板表示实体对象源代码的生成策略;编译单元,用于将所述源代码编译成实体对象的字节码;加载单元,用于加载所述实体对象的字节码,并对所述实体对象的字节码中所定义的类实例化,以完成实体对象的创建。本发明通过在软件系统的运行期,根据模板、元数据和基类生成实体对象的源代码可将源代码的生成从传统的设计期延迟到了运行期,并将所生成的实体对象的源代码编译,加载编译之后生成字节码,并对字节码中所定义的类实例化以完成实体对象的创建,能够在软件系统的运行期动态创建实体对象,且实体对象在运行期发生变更时,无需重新开发实体对象的源代码,从而减小软件系统的开发成本,增加软件系统的使用寿命。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实体对象创建方法实施例的流程图;图2为本发明实体对象创建方法实施例的具体流程图;图3为本发明实体对象创建装置的结构框图;图4为本发明实体对象创建装置中的源代码生成单元的结构框图;图5为图4中的模板选择和加载模块的结构框图;图6为图4中的解析模块的结构框图;图7为图3中的加载单元的结构框图;图8为图7中的实例化模块的结构框图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其它实施例,都属于本发明保护的范围。实施例1 本实施例提供一种实体对象的创建方法,包括S11,存储描述实体对象的元数据;S12,在软件系统的运行期,根据模板、元数据和基类生成实体对象的源代码,所述模板表示实体对象源代码的生成策略;S13,将所述源代码编译成实体对象的字节码;S14,加载所述实体对象的字节码,并对所述实体对象的字节码中所定义的类实例化,以完成实体对象的创建。本发明实施例通过在软件系统的运行期,根据模板、元数据和基类生成实体对象的源代码可将源代码的生成从传统的设计期延迟到了运行期,并将所生成的实体对象的源代码编译,加载编译之后生成字节码,并对字节码中所定义的类实例化以完成实体对象的创建,能够在软件系统的运行期动态创建实体对象,且实体对象在运行期发生变更时,无需重新开发实体对象的源代码,从而减小软件系统的开发成本,增加软件系统的使用寿命。可选地,S12中在软件系统的运行期,根据模板、元数据和基类生成实体对象的源代码具体包括在软件系统的运行期,根据实体对象的元数据选择对应模板并加载此对应模板;根据所述对应模板中实体对象源代码的生成策略相应地选择基类,所述基类被实体对象继承以使所述实体对象具有所述基类的属性和方法;其中,所述对应模板中实体对象源代码的生成策略可体现出类元数据中基类的结构类型,基类的选择是根据类元数据中基类的结构类型来确定,基类的结构类型包括普通结构、树型结构和顺序结构;基类是实体对象的父类,而基类对于软件系统而言是可知的, 通过调用基类的方法,可实现对实体对象的通用处理;对所述对应模板中的源代码进行解析以生成实体对象的源代码。进一步地,所述在软件系统的运行期,根据实体对象的元数据选择对应模板并加载此对应模板具体包括在软件系统的运行期,根据实体对象的元数据,判断所述实体对象所属的类的类型;根据所述实体对象所属的类的类型选择与此类的类型对应的模板,并加载此对应模板。其中,不同的类的类型可对应不同的类源代码模板,配置类元数据时可以选择创建类源代码使用的模板,该过程由开发人员在创建元数据时根据类的类型编写相应的源代码完成,在软件系统的运行期可直接使用。可选地,所述对所述对应模板中的源代码进行解析以生成实体对象的源代码具体包括对所述对应模板中的源代码进行解析以识别出所述对应模板源代码中的变量和语句;加载与所述对应模板源代码中的所述变量和语句相关的元数据;将所述对应模板源代码中的变量替换为与所述变量相关的元数据,并将所述对应模板源代码中的语句替换为与所述语句相关的元数据,替换后生成实体对象的源代码。可选地,S14中,所述加载所述实体对象的字节码包括根据元数据,采用关联加载策略加载所述实体对象的字节码。进一步地,所述根据元数据,采用关联加载策略加载所述实体对象的字节码具体包括根据元数据,对所述实体对象的所有属性进行遍历;判断所遍历的所有属性的数据类型是否关联其他实体类;若关联,则加载所述其他实体类直至所述所遍历的所有属性的数据类型都不再关联其他实体类;加载所述实体对象的字节码。为了更好的理解本发明实施例所采用的技术方案,下面通过本发明实体对象创建方法的具体实施例来更详细地描述本发明。实施例2 本实施例提供的实体对象创建方法具体包括S21,存储描述实体对象的元数据;元数据是对实体对象的关键抽象,描述实体对象的结构信息,元数据以类元数据为核心,组织实体对象各方面的信息;所述描述实体对象的元数据包括类元数据、持久化对象属性元数据、值对象属性元数据和关联元数据;针对不同元数据分别作如下说明>类元数据类元数据是元数据的核心,描述实体对象的基本信息,并组织实体对象各方面的元数据信息,包括属性、关联、操作等。>持久化对象属性元数据持久化对象属性元数据从持久化的角度表示实体对象的特征,持久化对象属性包括属性名称、属性数据类型、映射的字段名等。>值对象属性元数据值对象属性元数据从值处理的角度表示实体对象的特征, 值对象属性包括属性名称,属性的可见性、属性值处理类型等。>关联元数据关联元数据描述实体对象和其他实体对象之间的关联关系,关联元数据包括关联的类名、关联方式以及关联属性的映射关系等。除了所列出的各种元数据之外,可选地,所述描述实体对象的元数据还可进一步包括操作元数据,用于描述实体对象提供的操作,包括操作方法名、操作类型、操作方法的参数等;可通过建立元数据信息库来存储描述实体对象的元数据,可选地,元数据信息库可以采用XML(可扩展标记语言,Extensible Markup Language)文件或数据库的形式,所述元数据信息库可由开发人员在源代码设计阶段编写源代码或编写配置程序生成;S22,在软件系统的运行期,根据实体对象的元数据,判断所述实体对象所属的类的类型;需要指出的是,所述在软件系统的运行期,即表明后续所作的动作是针对在软件系统运行的过程中而作出的;S23,根据所述实体对象所属的类的类型选择与此类的类型对应的模板,并加载此对应模板;其中,所述模板表示生成源代码的生成策略,所述生成策略包括源代码的生成格式;不同的类的类型可对应不同的类源代码模板,配置类元数据时可以选择创建类源代码使用的模板,该过程由开发人员在创建元数据时根据类的类型编写相应的源代码完成,在软件系统的运行期可直接使用;下面给出一段应用于Java平台的模板代码的实例
权利要求
1.一种实体对象的创建方法,其特征在于,包括 存储描述实体对象的元数据;在软件系统的运行期,根据模板、元数据和基类生成实体对象的源代码,所述模板表示实体对象源代码的生成策略;将所述源代码编译成实体对象的字节码;加载所述实体对象的字节码,并对所述实体对象的字节码中所定义的类实例化,以完成实体对象的创建。
2.根据权利要求1所述实体对象的创建方法,其特征在于,所述在软件系统的运行期, 根据模板、元数据和基类生成实体对象的源代码包括在软件系统的运行期,根据实体对象的元数据选择对应模板并加载此对应模板; 根据所述对应模板中实体对象源代码的生成策略相应地选择基类,所述基类被实体对象继承以使所述实体对象具有所述基类的属性和方法;对所述对应模板中的源代码进行解析以生成实体对象的源代码。
3.根据权利要求2所述实体对象的创建方法,其特征在于,所述在软件系统的运行期, 根据实体对象的元数据选择对应模板并加载此对应模板包括在软件系统的运行期,根据实体对象的元数据,判断所述实体对象所属的类的类型; 根据所述实体对象所属的类的类型选择与此类的类型对应的模板,并加载此对应模板。
4.根据权利要求2所述实体对象的创建方法,其特征在于,所述对所述对应模板中的源代码进行解析以生成实体对象的源代码包括对所述对应模板中的源代码进行解析以识别出所述对应模板源代码中的变量和语句;加载与所述对应模板源代码中的所述变量和语句相关的元数据; 将所述对应模板源代码中的变量替换为与所述变量相关的元数据,并将所述对应模板源代码中的语句替换为与所述语句相关的元数据,替换后生成实体对象的源代码。
5.根据权利要求1所述实体对象的创建方法,其特征在于,所述加载所述实体对象的字节码包括根据元数据,采用关联加载策略加载所述实体对象的字节码。
6.根据权利要求5所述实体对象的创建方法,其特征在于,所述根据元数据,采用关联加载策略加载所述实体对象的字节码包括根据元数据,对所述实体对象的所有属性进行遍历; 判断所遍历的所有属性的数据类型是否关联其他实体类;若关联,则加载所述其他实体类直至所述所遍历的所有属性的数据类型都不再关联其他实体类;加载所述实体对象的字节码。
7.根据权利要求1至6项中任一项所述的所述实体对象的创建方法,其特征在于,所述元数据包括类元数据,描述实体对象的基本信息并组织实体对象; 持久化对象属性元数据,表示实体对象持久化方面的特征;值对象属性元数据,表示实体对象值处理方面的特征;和关联元数据,描述实体对象与其他实体对象之间的关联关系。
8.根据权利要求7所述的所述实体对象的创建方法,其特征在于,所述元数据进一步包括操作元数据,其描述实体对象提供的操作。
9.根据权利要求1至6项中任一项所述的实体对象的创建方法,其特征在于,所述基类包括普通结构实体类、树形结构实体类和顺序结构实体类。
10.一种实体对象创建装置,其特征在于,包括 存储单元,用于存储描述实体对象的元数据;源代码生成单元,用于在软件系统的运行期,根据模板、元数据和基类生成实体对象的源代码,所述模板表示实体对象源代码的生成策略;编译单元,用于将所述源代码编译成实体对象的字节码;加载单元,用于加载所述实体对象的字节码,并对所述实体对象的字节码中所定义的类实例化,以完成实体对象的创建。
11.根据权利要求10所述实体对象创建装置,其特征在于,所述源代码生成单元包括 模板选择和加载模块,用于在软件系统的运行期,根据实体对象的元数据选择对应模板并加载此对应模板;基类选择模块,用于根据所述对应模板中实体对象源代码的生成策略相应地选择基类,所述基类被实体对象继承以使所述实体对象具有所述基类的属性和方法;解析模块,用于对所述对应模板中的源代码进行解析以生成实体对象的源代码。
12.根据权利要求11所述实体对象创建装置,其特征在于,所述模板选择和加载模块包括判断子模块,用于在软件系统的运行期,根据实体对象的元数据,判断所述实体对象所属的类的类型;选择子模块,用于根据所述实体对象所属的类的类型选择与此类的类型对应的模板; 加载子模块,用于加载此对应模板。
13.根据权利要求11所述实体对象创建装置,其特征在于,所述解析模块包括 解析子模块,用于对所述对应模板中的源代码进行解析以识别出所述对应模板源代码中的变量和语句;加载子模块,用于加载与所述对应模板源代码中的所述变量和语句相关的元数据; 替换子模块,用于将所述对应模板源代码中的变量替换为与所述变量相关的元数据, 并将所述对应模板源代码中的语句替换为与所述语句相关的元数据,替换后生成实体对象的源代码。
14.根据权利要求10所述实体对象创建装置,其特征在于,所述加载单元包括 加载模块,用于加载实体对象的字节码;实例化模块,用于对所述实体对象的字节码中所定义的类实例化。
15.根据权利要求10所述实体对象创建装置,其特征在于,所述实例化模块包括 遍历子模块,用于根据元数据,对所述实体对象所属实体类的所有属性进行遍历; 判断子模块,用于判断所遍历的所有属性的数据类型是否关联其他实体类;加载和实例化子模块,用于在判断子模块的判断结果为关联时,加载所述其他实体类并实例化直至所述所遍历的所有属性的数据类型都不再关联其他实体类。
16.根据权利要求11至15项中任一项所述的实体对象创建装置,其特征在于,所述元数据包括类元数据,描述实体对象的基本信息并组织实体对象; 持久化对象属性元数据,表示实体对象持久化方面的特征; 值对象属性元数据,表示实体对象值处理方面的特征;和关联元数据,描述实体对象与其他实体对象之间的关联关系。
17.根据权利要求16所述的实体对象创建装置,其特征在于,所述元数据进一步包括操作元数据,其描述实体对象提供的操作。
18.根据权利要求10至15项中任一项所述的实体对象创建装置,其特征在于,所述基类包括普通结构实体类、树形结构实体类和顺序结构实体类。
全文摘要
本发明实施例公开了一种实体对象的创建方法和实体对象创建装置,涉及面向对象的软件开发领域,为解决软件系统依赖于实体对象而使软件系统失去通用性的问题而发明。所采用的具体技术方案为一种实体对象的创建方法,包括存储描述实体对象的元数据;在软件系统的运行期,根据模板、元数据和基类生成实体对象的源代码,所述模板表示实体对象源代码的生成策略;将所述源代码编译成实体对象的字节码;加载所述实体对象的字节码,并对所述实体对象的字节码中所定义的类实例化,以完成实体对象的创建。本发明还提供一种实体对象创建装置。本发明主要用于面向对象的软件系统中。
文档编号G06F9/44GK102270138SQ20111023311
公开日2011年12月7日 申请日期2011年8月15日 优先权日2011年8月15日
发明者金崇华 申请人:青岛海信传媒网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1