一种数据持久化实现方法技术

技术编号:2821218 阅读:429 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种数据持久化实现方法。在数据库中构建与业务实体类对应的表,使用反射类库API获取业务实体类的字段信息,从而构造相应的SQL语句,实例化应用层所传递参数相应的数据访问类,并使用反射类库激活参数中的获取方法后,将字段的值赋给相应的SQL语句,执行后完成调用。本方法使得对于数据的持久化操作可以自适应对象数据模型和关系数据模型的变化,使得不再需要大量的配置文件来维护对象数据模型与关系数据模型之间的映射。本方法提供了统一的数据访问接口,不需绑定具体的业务逻辑和数据方案,可以在其他系统中复用,从而提高了持久层的开发效率,实现数据逻辑和业务逻辑的有效分离,提高系统的可扩展性。

【技术实现步骤摘要】

本专利技术涉及数据处理领域,具体涉及。
技术介绍
随着企业的发展,企业数据种类越来越多且数据结构变化迅速。这些数据自身通常存在 以下特点(1)数据资源的种类多,访问方法多样,越来越需要操作大量异构的数据,并且随时会有各类新的数据产生;(2)数据资源所包含的属性会随时更新,所含的信息会根据业 务需要随时修改。如何统一高效的管理这些多样易变的数据是目前企业数据持久层实现中亟 待解决的问题。Ruby on Rails (ROR)是一个支持数据库的Internet应用程序的Ruby框架,它不 采用配置文件这种策略保持灵活性。Rails中方法、类、表和列釆用普通的项目目录结构和 简单普通的命名约定,这些约定已配置在应用程序中。因此Rails应用程序只需要对应Java 应用程序的小部分配置代码, 一般是十分之一或更少。反射是动态发现类型信息的能力。反射机制是在运行状态中,对于任意的类都能够知道 这个类的所有属性和方法,对于任意的对象都能任意调用它的方法,这种动态获取信息以及 动态调用对象方法的功能称为反射机制。现今很多语言都支持反射的功能,例如java语言 提供的反射功能都在java.lang.reflect包里实现并提供相应的API方便用户调用。当前,对于数据持久化通常采用J2EE模式,使用其硬编码的DAO设计思想实现对象 模型到关系模型的映射,这种方法存在以下问题第一、编码工作量大,且重复工作较多。在数据持久化操作中存在很多通用的操作,例 如CRUD操作,如果针对每种业务实体编写其数据访问的CRUD操作,不仅工作量大且效 率较低。第二、硬编码的DAO方式不能很好地适应关系模型的变化。当关系模型改变时,需要 手工修改代码并对代码需进行重新测试,导致编码出错的可能性较高。第三、当需要引入新的数据资源时,必须针对这种新数据编写单独的数据访问类,代码 不能复用。另外,目前持久化技术中还经常采用Hibernate方法,但此种方法针对每种对象纟莫型都 需要保存配置文件,以映射到关系模型,对于大型的企业应用,其配置文件数量众多且难于 管理。因此目前的持久化技术难以满足数据种类繁多、数据更新频繁的应用需求,无法提供统一的数据访问接口,对开发效率有不利影响,而且会降低系统整体的可扩展性和可维护性。 专利技术 内容本专利技术提供了,在数据库中构建与业务实体类对应的表,使用反射类库API获取业务实体类的字段信息,从而构造相应的SQL语句,实例化应用层所传 递参数相应的数据访问类,并使用反射类库激活参数中的获取方法后,将字段的值赋给相应 的SQL语句,执行后完成调用,本方法使得对于数据的持久化操作可以自适应对象数据模型 和关系数据模型的变化,使得不再需要大量的配置文件来维护对象数据模型与关系数据模型 之间的映射;提供了统一的数据访问接口,不需绑定具体的业务逻辑和数据方案,可以在其 他系统中复用,从而提高了持久层的开发效率,实现数据逻辑和业务逻辑的有效分离,提高 系统的可扩展性。,包括如下步骤步骤l:根据具体的业务需求构建数据库,按照POJO构建与数据库表对应且字段名称一 致的业务实体类,并配置数据库连接池。步骤2:应用层根据统一访问接口向数据持久化层提出访问请求,接收到请求后,首先使 用反射机制的类库获取访问请求中参数所属的业务实体类名,在配置文件中査找是否存在与 该业务实体类名对应的数据访问类,若不存在则提示用户并退出操作,若存在加载并生成该 数据访问类的一个实例。步骤3:调用数据访问类实例中与提出的访问请求相一致的数据操作。首先判断对于该业 务实体类进行CRUD操作的SQL语句是否保存在数据访问类中,若已保存在数据访问类中转 步骤4;若没有则通过反射机制的类库获取业务实体类的字段名称与类型,构造对业务实体类 进行CRUD的操作信息保存在数据访问类中。步骤4:访问请求从数据访问类中遍历査找,取出与访问请求相应的操作信息。初始化 数据库操作的条件,包括从数据库连接池中获取连接,建立操作语句和数据结果集。步骤5:根据取出操作信息的字段名称及字段类型,获取各访问请求的字段名称对应的方 法,并调用这些方法获取相应的字段内容值,将获得的值赋给对应操作信息中的SQL语句。步骤6:执行操作信息中的SQL语句,如果执行成功,则将结果返回至应用层,并关闭 数据库连接;否则,捕获并处理异常信息,再关闭数据库的连接。所述步骤2中,业务实体类与数据访问类的配置文件采用XML文件的形式,每条记录包 括业务实体类的名称和该类相应的数据访问类的名称。所述步骤3中采用反射机制的类库动态获取业务实体类的字段名称和字段类型,这些信息 用来构造CRUD数据操作的SQL语句,使用自定义的数据结构保存CRUD操作的含义,包含 的信息有操作的描述、操作的SQL语句、SQL语句的字段名称及字段类型;SQL语句的字段名称及字段类型采用键值对的形式保存。所述步骤5中获取各访问请求的字段名称对应的方法时,按操作信息中SQL字段名称的顺序依次利用反射机制的类库激活访问请求参数中该字段所对应的方法;如果字段类型为布尔型,则获取该字段的方法名称为"Is+字段名()",否则获取该字段的方法名称为"Get+字 段名()",并将获得的字段内容赋给操作信息中的对应SQL语句。 本专利技术的优点在于(1) 由于本方法使用反射自动生成业务实体类的数据访问操作,因此使得数据访问代码 的实现与具体业务实体类无关,应用系统可以方便地在该方法的基础上引进新的数据资源,提高了系统的扩展性;(2) 由于使用反射API获取业务实体类的内部信息,动态生成相应的CRUD操作,因 此避免数据访问代码的重复开发;(3) 由于业务实体类的建立符合一定的约定,因此提供统一、灵活、高效、安全的数据 访问服务;(4) 由于使用反射API获取业务实体类的字段信息构造类的CRUD操作,使得数据访 问的实现能够自适应不同的业务实体类以及类的变化,因此不需绑定具体的业务逻辑和数据 方案,可以在其他系统中复用,从而减少了应用开发量,提高了软件系统的开发效率。附图说明图1为本专利技术的方法流程图2为本专利技术的业务实体类与数据访问类映射的XML schema ,图3为本专利技术的业务实体类与数据访问类映射XML文件实例; 图4为本专利技术的数据访问类add操作的流程图。 具体实施例方式下面将结合附图对本专利技术作进一步的详细说明。本专利技术的目的是提出,通过本专利技术使得对于数据的持久化操作 可以自适应对象数据模型和关系数据模型的变化,使得不再需要大量的配置文件来维护对象 数据模型与关系数据f莫型之间的映射,从而提高了持久化操作的效率,实现数据逻辑和业务 逻辑的有效分离,提高系统的可扩展性。本专利技术,如图1所示,包括如下步骤步骤一分析具体的业务需求,列出其中的实体及应包含的信息和信息类型,根据列出 的实体构建数据库,使数据库中的每张表能够反映业务中的相应实体,并且按照具体的业务 需求,配置数据库连接池以便拥有较高的访问效率。在数据库设计完成的基础上,构建每张数据库表对应到程序的业务实体类。POJO(Plain Old Java Object)为一种类的设计禾莫式,POJO包括字段和对字段的get和set方法,且字 段的类型为原始类型。在该持久化方法中业务实体类本文档来自技高网...

【技术保护点】
一种数据持久化实现方法,其特征在于,包括如下步骤: 步骤一:根据具体的业务需求构建数据库,按照POJO构建与数据库表对应且字段名称一致的业务实体类,并配置数据库连接池; 步骤二:应用层根据统一访问接口向数据持久化层提出访问请求,接收到请求后,首先使用反射机制的类库获取访问请求中参数所属的业务实体类名,在配置文件中查找是否存在与该类名对应的数据访问类,若不存在则提示用户并退出操作,若存在加载并生成该数据访问类的一个实例; 步骤三:调用数据访问类实例中与提出的访问请求相一致的数据操作;首先判断对于该业务实体类进行CRUD操作的SQL语句是否保存在数据访问类中,若已保存在数据访问类中转步骤4;若没有则通过反射机制的类库动态获取业务实体类的字段名称与类型,构造对业务实体类进行CRUD的操作信息保存在数据访问类中; 步骤四:访问请求从数据访问类中遍历查找,取出与访问请求相应的操作信息;初始化数据库操作的条件,包括从数据库连接池中获取连接,建立操作语句和数据结果集; 步骤五:根据取出操作信息的字段名称及字段类型,获取各访问请求的字段名称对应的方法,并调用这些方法获取相应的字段内容值,将获得的值赋给对应操作信息中的SQL语句; 步骤六:执行操作信息中的SQL语句,如果执行成功,则将结果返回至应用层,并关闭数据库连接;否则,捕获并处理异常信息,再关闭数据库的连接。...

【技术特征摘要】

【专利技术属性】
技术研发人员:余丹徐帆叶钢李先军马世龙
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1