本申请提供了一种基于元对象系统的数据持久化方法,所述方法应用于数据持久化装置,包括:获取数据持久化请求;解析所述数据持久化请求,得到sql语句;将所述sql语句发送至数据库;其中,所述数据库与所述数据持久化装置连接;所述数据库执行sql语句,得到执行结果;基于所述执行结果自动完成类对象装配;本申请大大提高了软件开发效率以及代码的复用性,对传统的数据持久化开发模式和方法进行了有效地改进,为基于Qt开发的应用程序数据持久化提供了新的解决方案。供了新的解决方案。供了新的解决方案。
【技术实现步骤摘要】
一种基于元对象系统的数据持久化方法和装置
[0001]本申请属于计算机软件持久化
,尤其涉及一种基于元对象系统的数据持久化方法和装置。
技术介绍
[0002]数据持久化是将内存中的数据对象永久保存到数据库中。传统数据持久化技术,比如数据库访问对象(Data Access Object,DAO),需要人工手写代码,随着现代软件规模的日益扩大,这种开发模式成本高、效率低、开发周期长、可靠性低,已经不能满足研发的需求,需要一种可以自动将数据持久化到数据库中的解决方案。
[0003]Qt的元对象系统可以将用户自定义的类注册到系统中,用户只需要通过类名称就可以了解关于类的所有元信息,基于元对象的数据持久化解决方案利用这种特性,将上层具体应用数据与底层数据自动持久化层分离开来,已达到解决方案的灵活性和可重用性。
技术实现思路
[0004]为了解决上述技术问题,第一方面,本申请提出了一种基于元对象系统的数据持久化方法,所述方法应用于数据持久化装置,包括:
[0005]获取数据持久化请求;
[0006]解析所述数据持久化请求,得到sql语句;
[0007]将所述sql语句发送至数据库;其中,所述数据库与所述数据持久化装置连接;
[0008]所述数据库执行sql语句,得到执行结果;
[0009]基于所述执行结果自动完成类对象装配。
[0010]优选地,所述解析所述数据持久化请求,得到sql语句,包括:
[0011]将所述数据持久化请求中数据的类型转化为数据库数据类型,生成第一解析结果;
[0012]将所述数据持久化请求中的对象关系转化为数据库表关系,生成第二解析结果;
[0013]基于所述第一解析结果和所述第二解析结果,得到第三解析结果;其中,所述第三解析结果包括sql语句。
[0014]优选地,所述数据持久化工具获取数据持久化请求之前,还包括:
[0015]基于数据库建模结果建立类对象和对象之间的关系;
[0016]基于所述类对象和对象之间的关系得到所述数据持久化请求。
[0017]优选地,所述基于所述执行结果自动完成类对象装配,包括:
[0018]基于元对象系统和所述执行结果自动完成类对象装备。
[0019]第二方面,本申请提供了一种基于元对象系统的数据持久化装置,所述装置包括:
[0020]查询和执行接口,用于获取数据持久化请求;
[0021]数据库语句生成器,用于解析所述数据持久化请求,得到sql语句;
[0022]查询和执行接口,还用于将所述sql语句发送至数据库;其中,所述数据库与所述
数据持久化装置连接;
[0023]数据库模型组件,用于基于所述执行结果自动完成类对象装配;其中,所述执行结果是数据库执行sql语句得到的。
[0024]优选地,解析组件,用于将所述数据持久化请求中数据的类型转化为数据库数据类型,生成第一解析结果;
[0025]所述数据库模型组件,还用于将所述数据持久化请求中的对象关系转化为数据库表关系,生成第二解析结果;
[0026]所述数据库语句生成器,还用于基于所述第一解析结果和所述第二解析结果,得到第三解析结果;其中,所述第三解析结果包括sql语句。
[0027]优选地,代码自动生成工具,用于基于数据库建模结果建立类对象和对象之间的关系;基于所述类对象和对象之间的关系得到所述数据持久化请求。
[0028]优选地,所述查询和执行接口,还用于基于元对象系统和所述执行结果自动完成类对象装备。
[0029]本申请具有以下技术效果:
[0030]本申请大大提高了软件开发效率以及代码的复用性,对传统的数据持久化开发模式和方法进行了有效地改进,为基于Qt开发的应用程序数据持久化提供了新的解决方案。
附图说明
[0031]图1是本申请实施例提供的数据持久化装置框组件图;
[0032]图2是本申请实施例提供的持久化组件交互时序图;
[0033]图3是本申请实施例提供的代码自动生成工具框架图。
具体实施方式
[0034]请参阅图1
‑
3,下面对本申请做进一步详细说明。
[0035]本申请为基于Qt为开发框架的应用程序提供给一个具有高可靠性、好的扩展性和易用性的数据持久化解决方案。
[0036]在本申请实施例中,本申请提供了一种基于元对象系统的数据持久化解决方案,包括:数据持久化装置和代码自动生成工具。
[0037]其中,数据持久化装置主要为数据持久化业务提供接口,主要包括执行和操作数据的Query接口,提供异步执行能力的Async接口,执行结果表示的SqlModel接口,查询语句自动生成的SqlGenerator接口,表示数据库连接池的Connection接口,表示数据库模型的DatabaseModel。
[0038]其中,代码生成工具根据数据库建模结果自动生成满足语法要求的Qt源程序代码。
[0039]本申请大大提高了软件开发效率以及代码的复用性,对传统的数据持久化开发模式和方法进行了有效地改进,为基于Qt开发的应用程序数据持久化提供了新的解决方案。
[0040]下面对本申请做进一步详细说明。
[0041]请参阅图1,图1是本专利技术持久化装置组件图。
[0042]其中,Query组件是执行数据持久化的主要接口,该接口提供数据的增加、删除、更
新、查询能力;TableSet映射数据库表单,表示多条记录的集合;Table映射数据库中一条记录;Phrase负责解析用户提交的请求;SqlGenerator根据解析结果生成对应数据库产品所需的SQL语句;Connection表示数据库的连接,用于建立客户端到服务器端的链路;SqlModel用于表示用户提交的查询结果,继承自Qt的Model类,便于和Qt的MVD框架结合,可以快速显示查询结果;DatabaseModel映射一个具体的关系型数据库,TableModel映射关系型数据库的一张表单;FieldModel映射关系型数据库的一个字段;RelationModel映射关系型数据库表之间的关联关系。
[0043]请参阅图2,图2是提交数据持久化请求的组件交互时序图。
[0044]其中,用户根据实际业务的需要,选择适合的接口提交请求,持久化装置根据当前连接的数据库产品选择合适的SqlGenerator将用户的请求转为sql语句,转化过程涉及1)数据类型转化,该部分通过Phrase组件完成;2)类数据成员到表字段的转化;3)类之间关联关系到表之间外键关系的转化,以上两部分由DatabaseModel组件完成。SqlGenerator完成sql的构建后,需要从Connection组件中取出数据库连接,将数据库持久化请求发送给具体的数据库产品执行。数据库产品将执行完的结果返回后,工具解析结果,自动完成对应类对象的装配,这部分利用Q本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种基于元对象系统的数据持久化方法,其特征在于,所述方法应用于数据持久化装置,包括:获取数据持久化请求;解析所述数据持久化请求,得到sql语句;将所述sql语句发送至数据库;其中,所述数据库与所述数据持久化装置连接;所述数据库执行sql语句,得到执行结果;基于所述执行结果自动完成类对象装配。2.根据权利要求1所述的方法,其特征在于,所述解析所述数据持久化请求,得到sql语句,包括:将所述数据持久化请求中数据的类型转化为数据库数据类型,生成第一解析结果;将所述数据持久化请求中的对象关系转化为数据库表关系,生成第二解析结果;基于所述第一解析结果和所述第二解析结果,得到第三解析结果;其中,所述第三解析结果包括sql语句。3.根据权利要求1所述的方法,其特征在于,所述数据持久化工具获取数据持久化请求之前,还包括:基于数据库建模结果建立类对象和对象之间的关系;基于所述类对象和对象之间的关系得到所述数据持久化请求。4.根据权利要求1所述的方法,其特征在于,所述基于所述执行结果自动完成类对象装配,包括:基于元对象系统和所述执行结果自动完成类对象装备。5.一种基于元对象系统的数...
【专利技术属性】
技术研发人员:周未东,吕林森,李虎,武庆钊,
申请(专利权)人:中国航空无线电电子研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。