一种跨平台、多语言的ORM服务框架解决方案制造技术

技术编号:38127229 阅读:6 留言:0更新日期:2023-07-08 09:32
本发明专利技术公开了一种跨平台、多语言的ORM服务框架解决方案,包括以下步骤:gRPC定义生成不同语言版本的client,gRPC对于服务端的接口定义生成不同语言的客户端代码;对于不同语言的客户端代码,创建对应的客户端,针对不同客户端语言封装轻量客户端;使用gRPC的message指令定义表结构,生成语言的类,并将类对象操作当做表记录对象;使用gRPC的service rpc指令定义ORM操作接口所必需的数据结构;使用gRPC的service rpc指令定义ORM的操作接口;对表数据的CRUD进行操作。本发明专利技术缓存通过KiORM的服务端实现,客户端并不保存任何数据缓存,从而降低客户端的压力,能够复用相同的查询缓存结果;进而提升内存利用率,也提高客户端的请求体验和稳定性。请求体验和稳定性。请求体验和稳定性。

【技术实现步骤摘要】
一种跨平台、多语言的ORM服务框架解决方案


[0001]本专利技术属于计算机
,尤其涉及一种跨平台、多语言的ORM服务框架解决方案。

技术介绍

[0002]ORM是对象关系映射(Object

Relational Mapping)的简称,是一种编程技术,通常在OOP(Object

Oriented Programming)面向对象编程的时候,为了解决对象的持久化到数据库的操作更简便,并且不破坏OOP编程范式的规范而存在的一种编程思想框架。其目标是将面向对象的数据模型和关系数据库之间进行映射,使得程序可以像操作对象的常规方式一样操作对象的持久化到数据库,而不需要直接编写SQL语句。
[0003]各个公司IT选择的ORM框架都各不相同,大多数因为开发语言的基础,在可选的几个框架中选用一个进行使用。当公司多个业务本身就是多种语言的时候,那么就可能出现一家公司会使用2种或者更多种ORM框架的情况。
[0004]例如某公司财务系统,一部分是使用Java Web技术,一部分业务使用C#.NET技术,那么就可能存在即使用Java Hibernate又用C#的Entity Framework这两个ORM框架。甚至还会有前端javascript、python后端脚本、rust、scala等的业务也要用,导致选用的ORM框架越来越多;
[0005]由于引入的ORM框架多了,对技术人员的学习、开发、维护、升级成本都变得高了;各种ORM框架的配置细节不一样,功能特点不一样,缓存策略不一样,连接池支持和使用方法也不一样,字段约束/定义也不一样。导致整个学习周期变长,特别是针对那些少数员工但是要进行全栈业务开发的,仅多个ORM的用法都需要花费他个人不少的时间;另外即使开发上线了,那么后期的维护、变更、升级,都会带来更多不可想象的细节问题,严重者可能引起部分业务无法运行。

技术实现思路

[0006]有鉴于此,本专利技术基于KineDB提供了一种跨平台、多语言的ORM服务框架解决方案,以解决现有技术中由于引入的ORM框架多了,技术人员的学习、开发、维护、升级成本变高的问题。
[0007]本专利技术提供了一种跨平台、多语言的ORM服务框架解决方案,包括以下步骤:
[0008]步骤S1:抽象ORM的逻辑为gRPC跨语言的接口定义,gRPC定义生成不同语言版本的client,gRPC对于服务端的接口定义生成不同语言的客户端代码;
[0009]步骤S2:对于步骤S1中不同语言的客户端代码,创建对应的客户端,针对不同客户端语言封装thin wrapper轻量客户端;
[0010]步骤S3:使用gRPC的message指令定义表结构,生成语言的类,并将类对象操作当做表记录对象;
[0011]步骤S4:使用gRPC的service rpc指令定义ORM操作接口所必需的数据结构;
[0012]步骤S5:使用gRPC的service rpc指令定义ORM的操作接口;
[0013]步骤S6:对表数据的CRUD(指在做计算处理时的增加Create、读取Read、更新Update和删除Delete)进行操作。
[0014]进一步地,如权利要求1所述的一种跨平台、多语言的ORM服务框架解决方案,其特征在于,所述步骤S4具体如下:
[0015]步骤S41:gRPC使用message指令定义数据库连接Connection数据结构,结构体中包含数据库连接的唯一编号、用户名、密码、访问的数据库名称和访问的数据库实例地址url;
[0016]步骤S42:gRPC使用message指令定义数据库操作会话Session数据结构,结构体中包含会话唯一编号、会话的可选配置属性Map<属性名,属性值>集合;
[0017]步骤S43:gRPC使用message指令定义一个事务实例Transaction数据结构,结构体中包含事务唯一编号,事务的可选设置参数Map<参数名,参数值>集合;
[0018]步骤S44:gRPC使用message指令定义统一的错误KiError数据结构,结构体包含错误码、状态码和错误信息描述。
[0019]进一步地,所述步骤S5包括以下步骤:
[0020]步骤S50:gRPC使用service rpc指令来定义打开数据库会话openSession操作,该操作参数为Connection连接对象,表示访问的是对应连接所描述地址的数据库。返回值就是一个会话Session实例,会话Session保存了当前会话的编号和一些会话属性。
[0021]步骤S51:gRPC使用service rpc指令来定义关闭数据库会话closeSession操作,该操作参数传入Session会话对象,表示关闭的是Session所描述的会话编号对应的会话内容。操作的返回值是KiError错误码,若关闭会话报错,则会返回错误,否则错误码为空。
[0022]步骤S52:gRPC使用Service rpc指令来定义开始事务beginTransaction操作,该操作传入参数是Session对象,表示在这个会话上开启一个事务。操作的返回值就是一个Transaction事务实例对象,用于表示这个事务上下文信息。
[0023]步骤S53:gRPC使用Service rpc指令来定义提交事务commitTransaction操作,该操作传入的参数是Transaction事务对象,表示把这个事务所关联的系列操作作为一个事务提交。该操作的返回值是KiError统一错误码,表示事务提交是否正确。
[0024]步骤S54:gRPC使用Service rpc指令来定义回滚事务rollbackTransaction操作,该操作传入的参数是Transaction事务对象,表示把这个事务所关联的系列操作回滚,操作的返回值是KiError,表示是否回滚成功。
[0025]步骤S55:gRPC使用Service rpc指令来定义关闭事务closeTransaction操作,表示关闭此事务的操作,释放此事务相关的资源。该操作的返回值是KiError表示是否关闭成功。
[0026]进一步地,所述步骤S5还包括
[0027]步骤S56:gRPC使用Service rpc指令来定义保存对象Save操作,该操作的传入参数为会话Session和对象实例,表示将此对象作为一条记录保存到数据库中。操作返回值为KiError,表示操作成功与否。
[0028]步骤S57:gRPC使用Service rpc指令来定义更新对象Update操作,该操作的传入产生为Session会话和对象实例,表示将此对象实例更新到数据库对应记录中。操作返回值
为KiError,表示操作成功与否。
[0029]步骤S58:gRPC使用Service rpc指令来定义删除对象Delete操作,该操作本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种跨平台、多语言的ORM服务框架解决方案,其特征在于,包括以下步骤:步骤S1:gRPC定义生成不同语言版本的客户端client,gRPC对于服务端的接口定义生成不同语言的客户端代码;步骤S2:对于步骤S1中不同语言的客户端代码,创建对应的客户端,针对不同客户端语言封装thin wrapper轻量客户端;步骤S3:使用gRPC的message指令定义表结构,生成语言的类,并将类对象操作当做表记录对象;步骤S4:使用gRPC的service rpc指令定义ORM操作接口所必需的数据结构;步骤S5:使用gRPC的service rpc指令定义ORM的操作接口;步骤S6:对表数据的CRUD进行操作。2.如权利要求1所述的一种跨平台、多语言的ORM服务框架解决方案,其特征在于,所述步骤S4具体如下:步骤S41:gRPC使用message指令定义数据库连接Connection数据结构,结构体中包含数据库连接的唯一编号、用户名、密码、访问的数据库名称和访问的数据库实例地址url;步骤S42:gRPC使用message指令定义数据库操作会话Session数据结构,结构体中包含会话唯一编号、会话的可选配置属性Map<属性名,属性值>集合;步骤S43:gRPC使用message指令定义一个事务实例Transaction数据结构,结构体中包含事务唯一编号,事务的可选设置参数Map<参数名,参数值>集合;步骤S44:gRPC使用message指令定义统一的错误KiError数据结构,结构体包含错误码、状态码和错误信息描述。3.如权利要求1所述的一种跨平台、多语言的ORM服务框架解决方案,其特征在于,所述步骤S5包括以下步骤:步骤S50:gRPC使用service rpc指令来定义打开数据库会话openSession操作,该操作参数为Connection连接对象,表示访问的是对应连接所描述地址的数据库,返回值就是一个会话Session实例,会话Session保存了当前会话的编号和一些会话属性;步骤S51:gRPC使用service rpc指令来定义关闭数据库会话closeSession操作,该操作参数传入Session会话对象,表示关闭的是Session所描述的会话编号对应的会话内容,操作的返回值是KiError错误码,若关闭会话报错,则会返回错误,否则错误码为空;步骤S52:gRPC使用Service rpc指令来定义开始事务beginTransaction操作,该操作传入参数是Session对象,表示在这个会话上开启一个事务,操作的返回值就是一个Transaction事务实例对象,用于表示这个事务上下文信息;步骤S53:gRPC使用Service rpc指令来定义提交事务commitTransaction操作,该操作传入的参数是Transaction事务对象,表示把这个事务所关联的系列操作作为一个事务提交,该操作的返回值是KiError统一错误码,表示事务提交是否正确;步骤S54:gRPC使用Service rpc指令来定义回滚事务rollbackTransaction操作,该操作传入的参数是Transaction事务对象,表示把这个事务所关联的系列操作回滚,操作的返回值是KiError,表示是否回滚成功;步骤S55:gRPC使用Service rpc指令来定义关闭事务closeTransaction操作,表示关闭此事务的操作,释放此事务相关的资源,该操作的返回值是KiError表示是否关闭成功。
4.如权利要求3所述的一种跨平台、多语言的ORM服务框架解决方案,其特征在于,所述步骤S5还包括以下步骤步骤S56:gRPC使用Service rpc指令来...

【专利技术属性】
技术研发人员:韦振源王刚
申请(专利权)人:上海恩毕可施科技有限公司
类型:发明
国别省市:

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

1