一种更新持久化数据的方法及装置与流程

文档序号:18883892发布日期:2019-10-15 20:34阅读:210来源:国知局
一种更新持久化数据的方法及装置与流程

本发明涉及计算机技术领域,特别涉及一种更新持久化数据的方法及装置。



背景技术:

目前开发人员在进行程序设计时,往往不可避免的需要将数据持久化到磁盘中,并反复的对数据进行增加、删除、修改或查询。其中,在执行“修改”操作时,往往不可避免的需要针对其中一个或多个字段进行修改,其余字段保留原来的值。

目前针对持久化数据的修改通常手动进行修改,修改过程中存在着大量的重复工作,手动修改方式比较繁琐,费时耗力。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种更新持久化数据的方法及装置。所述技术方案如下:

第一方面,提供了一种更新持久化数据的方法,所述方法包括:

获取第一实体,其中,所述第一实体包括待更新对象的全部字段以及待更新字段的值;

从存储设备中获取所述待更新对象的全部字段以及各个字段的值,并保存在第二实体中;

将所述第二实体中所述待更新字段的值更新为所述第一实体中所述待更新字段的值;

将更新后的第二实体持久化到所述存储设备中。

可选的,所述获取第一实体的步骤包括:

获取实体类的参数;

基于所述参数生成所述第一实体。

可选的,所述从存储设备中获取所述待更新对象的全部字段以及各个字段的值的步骤,包括:

判断所述第一实体中待更新对象的标识字段的值是否为空;

如果是,则流程结束,否则从存储设备中获取所述待更新对象的全部字段以及各个字段的值。

可选的,所述判断所述第一实体中待更新对象的标识字段的值是否为空的步骤之前,包括:

通过java反射机制获取所述第一实体中待更新对象的标识字段的值。

可选的,所述将所述第二实体中所述待更新字段的值更新为所述第一实体中所述待更新字段的值的步骤,包括:

获取所述第一实体中的全部字段,并遍历全部字段;

如果存在值不为空的字段,则将所述值不为空的字段作为所述待更新字段,并将所述待更新字段的值赋值给所述第二实体中与所述待更新字段相同的字段。

可选的,所述获取所述第一实体中的全部字段的步骤,还包括:

判断所述第二实体的数据是否为空;

如果是,则流程结束,否则获取所述第一实体中的全部字段。

第二方面,提供了一种更新持久化数据的装置,所述装置包括:

第一获取模块,用于获取第一实体,其中,所述第一实体包括待更新对象的全部字段以及待更新字段的值;

第二获取模块,用于从存储设备中获取所述待更新对象的全部字段以及各个字段的值,并保存在第二实体中;

更新模块,用于将所述第二实体中所述待更新字段的值更新为所述第一实体中所述待更新字段的值;

持久化模块,用于将更新后的第二实体持久化到所述存储设备中。

可选的,所述第一获取模块,具体用于:

获取实体类的参数;

基于所述参数生成所述第一实体。

可选的,所述第二获取模块,具体用于:

判断所述第一实体中待更新对象的标识字段的值是否为空;

如果是,则流程结束,否则从存储设备中获取所述待更新对象的全部字段以及各个字段的值。

可选的,所述第二获取模块,还具体用于:

通过java反射机制获取所述第一实体中待更新对象的标识字段的值。

可选的,所述持久化模块,具体用于:

获取所述第一实体中的全部字段,并遍历全部字段;

如果存在值不为空的字段,则将所述值不为空的字段作为所述待更新字段,并将所述待更新字段的值赋值给所述第二实体中与所述待更新字段相同的字段。

可选的,所述持久化模块,还具体用于:

判断所述第二实体的数据是否为空;

如果是,则流程结束,否则获取所述第一实体中的全部字段。

第三方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述第一方面所述的更新持久化数据的方法。

本发明实施例在更新持久化数据时,能够通过智能分析自动得出第一实体中需要更新的字段以及不需要更新的字段,并且能够从存储设备中自动获取旧数据,保存为第二实体,再将第一实体中待更新字段的值赋值给第二实体,最后将更新后的第二实体持久化到存储设备中,该更新持久化数据的操作采用智能控制,可以减少繁琐的重复手动判断,所以无论待修改对象包括多少字段数,都能够高效率的完成数据更新。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种询价处理方法的流程图;

图2是本发明实施例提供的一种询价处理装置的结构框图;

图3是本发明实施例提供的一种计算机设备的结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

持久化到存储设备中的数据以数据库表的形式进行保存。数据库表中可以包括多个对象的数据,每个对象可以包括多个字段,每个字段有对应的值(value)。例如,对象a包括的字段有id、f1、f2以及f3,这些字段的值分别为1、a1、a2以及a3。其中,对象中的id字段用于唯一标识数据库表中的一条记录,也即用于唯一标识某一对象。为与对象中的其他字段进行区别,这里将对象中的id字段称为标识字段。当需要修改某一字段的值时,例如将字段f2的值由a2改为b2,可以利用本发明实施例提供的更新持久化数据的方法进行修改,具体修改流程如下所述。

参照图1,为本发明实施例提供的一种更新持久化数据的方法的流程图,该方法具体包括以下步骤。

步骤101,获取第一实体,其中,所述第一实体包括待更新对象的全部字段以及待更新字段的值。

该第一实体为entity(实体)类的实体。第一实体中包括待更新对象的全部字段信息,以及待更新字段要修改为的值,其余字段的值为空。例如,第一实体的id值为1,f2的值为b2,f1和f3的值均为空。第一实体中值不为空的字段为需要更新的字段,值为空的字段为不需要更新的字段。

在实施中,可以由人工在应用层输入entity类的参数,也即待更新信息,该待更新信息包括待更新对象的id,该待更新对象中待更新字段以及待更新字段的值。在获取到该待更新信息之后,生成第一实体。可选的,还可以直接获取预先创建好的第一实体,本发明实施例不对得到该第一实体的方式进行具体限定。

步骤102,从存储设备中获取所述待更新对象的全部字段以及各个字段的值,并保存在第二实体中。

在获取到第一实体后,通过java反射机制获取所述第一实体中待更新对象的标识字段的值,也即第一实体中id的值。其中,java反射机制是一种能够动态获取信息以及动态调用对象方法的功能。然后判断所述第一实体中待更新对象的标识字段的值是否为空。如果为空,说明参数传递有误,则流程结束,否则从存储设备中获取所述待更新对象的全部字段以及各个字段的值,并保存在同为entity类的第二实体中。例如,第二实体中的di值为1,f1的值为a1,f2的值为a2,f3的值为a3。

步骤103,将所述第二实体中所述待更新字段的值更新为所述第一实体中所述待更新字段的值。

在得到第二实体之后,判断所述第二实体的数据是否为空,如果是,则流程结束,否则将所述第二实体中所述待更新字段的值更新为所述第一实体中所述待更新字段的值。具体的更新流程成为:获取所述第一实体中的全部字段,并遍历全部字段;如果存在值不为空的字段,则将所述值不为空的字段作为所述待更新字段,并将所述待更新字段的值赋值给所述第二实体中与所述待更新字段相同的字段。例如,第一实体中,只有f2的值不为空,则将f2的值b2赋值给第二实体中的f2,f2的值也就由a2修改为b2,其余字段的值不变,完成更新操作。

在实施中,可以通过内省机制与反射机制获取所述第一实体中的全部字段。其中,内省机制是java语言对bean类属性以及事件的一种缺省处理方法,其通过get(获取)方法或者set(修改)方法来访问对象属性。

步骤104,将更新后的第二实体持久化到所述存储设备中。

在更新完第二实体之后,把第二实体保存到可永久保存的存储设备中,例如磁盘,即完成将数据持久化。

本发明实施例不限于实体的类型,具有低耦合性,例如可以是实体猫或实体狗,该实体可以包括任意类型的属性,不会因实体不同而需要做额外处理。

本发明实施例在更新持久化数据时,能够通过智能分析自动得出第一实体中需要更新的字段以及不需要更新的字段,并且能够从存储设备中自动获取旧数据,保存为第二实体,再将第一实体中待更新字段的值赋值给第二实体,最后将更新后的第二实体持久化到存储设备中,该更新持久化数据的操作采用智能控制,可以减少繁琐的重复手动判断,所以无论待修改对象包括多少字段数,都能够高效率的完成数据更新。

参照图2,为本发明实施例提供的一种更新持久化数据的装置的结构框图,所述装置包括:

第一获取模块201,用于获取第一实体,其中,所述第一实体包括待更新对象的全部字段以及待更新字段的值;

第二获取模块202,用于从存储设备中获取所述待更新对象的全部字段以及各个字段的值,并保存在第二实体中;

更新模块203,用于将所述第二实体中所述待更新字段的值更新为所述第一实体中所述待更新字段的值;

持久化模块204,用于将更新后的第二实体持久化到所述存储设备中。

优选的,所述第一获取模块201,具体用于:

获取实体类的参数;

基于所述参数生成所述第一实体。

优选的,所述第二获取模块202,具体用于:

判断所述第一实体中待更新对象的标识字段的值是否为空;

如果是,则流程结束,否则从存储设备中获取所述待更新对象的全部字段以及各个字段的值。

优选的,所述第二获取模块202,还具体用于:

通过java反射机制获取所述第一实体中待更新对象的标识字段的值。

优选的,所述持久化模块203,具体用于:

获取所述第一实体中的全部字段,并遍历全部字段;

如果存在值不为空的字段,则将所述值不为空的字段作为所述待更新字段,并将所述待更新字段的值赋值给所述第二实体中与所述待更新字段相同的字段。

优选的,所述持久化模块204,还具体用于:

判断所述第二实体的数据是否为空;

如果是,则流程结束,否则获取所述第一实体中的全部字段。

本发明实施例在更新持久化数据时,能够通过智能分析自动得出第一实体中需要更新的字段以及不需要更新的字段,并且能够从存储设备中自动获取旧数据,保存为第二实体,再将第一实体中待更新字段的值赋值给第二实体,最后将更新后的第二实体持久化到存储设备中,该更新持久化数据的操作采用智能控制,可以减少繁琐的重复手动判断,所以无论待修改对象包括多少字段数,都能够高效率的完成数据更新。

需要说明的是:上述实施例提供的更新持久化数据的装置可基于计算机程序实现,该装置在更新持久化数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的更新持久化数据的装置与更新持久化数据的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图3是本发明实施例提供的计算机设备的结构示意图。该计算机设备300可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器322(例如,一个或一个以上处理器)和存储器332,一个或一个以上存储应用程序342或数据344的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器332和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对计算机设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储介质330通信,在计算机设备300上执行存储介质330中的一系列指令操作。

计算机设备300还可以包括一个或一个以上电源324,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,一个或一个以上键盘354,和/或,一个或一个以上操作系统341,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

计算机设备300可以包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行上述日志处理的指令。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,存储设备或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1