java数据库接口的作用_谈数据库适配发布接口(200514)

a4c26d1e5885305701be709a3d33442f.png

今天再谈下数据库接口适配方面的内容。

首先我简单再描述下在我们的自研ESB版本里面已经实现的数据库适配能力,我们将数据库适配分为查询适配和导入适配,对于数据库适配仍然是首先建立服务规范和服务契约,然后采用从顶朝下的方式,即先选择一个服务规范,然后基于该服务规范来适配后端的数据库。

1.

查询适配:选择一个查询服务规范,将查询参数动态参数化,然后自定义SQL,将SQL输出映射到服务

2. 导入适配:选择导入规范,自己写参数化Insert语句,然后将字段映射到服务规范的属性项

当前的这种适配我只支持单表的适配,没有去考虑复杂的主从表和多表,同时在整个适配的过程中需要自己编写Sql语句,因此对操作用户有一定的技术基础要求。即为了简单并具备一定的灵活性,这种方式是最好的。

今天再谈下数据库适配,即从底朝上的方式,即直接通过数据库表发布API接口,或者是SOAP WS接口,或者是Http Rest

API接口。

在很多主流的API快速开发平台里面我们基本可以看到类似的一些功能,以网上RestCloud产品提供的一些API快速开发平台功能特点参考如下:

平台通过数据模型、SQL、存储过程可以无代码快速的实现80%的API快速发布,平台本身已含有:

注解式开发、API接口自动扫描、验证框架、授权框架、

缓存框架、依赖注入框架、多数据源管理框架、多数据库事务管理框架等等核心功能。具体的API快速发布主要包括了如下:

1.可以通过业务模型、SQL语句、存储过程快速实现多表跨数据源的API发布

2.支持所有主流的SQL以及NO SQL的数据API发布为服务

3.可以通过业务模型配置快速实现树型结构的数据API发布、关联删除等操作,无需编码

4.可以实现一对多、多对多、多对一的查询、持久化、删除等操作的API发布

5.对所有数据模型可一键生成分页查询功能API

6.任意SQL语句一键发布为API服务

7.业务系统中存储过程发布为API服务

8.可以根据数据模型一键生成MVC的Java代码并发布API

对于上面的API快速生成和发布能力,简单总结来说主要包括如下几个关键点:

1. 要同时支持数据库表,存储过程,Sql语句的快速发布

2. 数据模型本身要支持单表,主从表,多表等各种数据模型场景

3. 对于发布的API接口应该考虑到增删改查等各种场景

今天我们再谈数据库适配发布接口,即更多的还是如何对数据库表,包括单表和多表的场景来发布一个API接口服务能力。而在我很早的谈MDM主数据管理的文章里面就谈到过,在数据库表和实际的API接口之间,还有一个关键的数据对象模型,这个数据对象模型起到了承上启下的作用。

基于数据模型定义来发布API接口服务能力

这个是我今天要谈的一个重点,就是基于数据模型来发布WS接口服务能力。对于数据模型一方面是在后端连接到具体的数据库表,一方面是在前端直接去发布API接口服务。

数据对象模型的灵活定义

对于数据对象模型的创建应该做到足够灵活,首先是创建一个基础数据对象,基础数据对象应该关联到一个后台的基础数据库表。在基础数据对象创建完成后,可以接着去创建这个数据对象的子对象,而这个子对象本身就是关联到后台的数据库明细表。

在子对象下面我们还可以继续去创建子子对象,并关联到进一步的明细数据库表。

即一个数据对象模型创建完成后,基础数据对象,子对象,子子对象全部都会映射到后台数据库的数据库表,同时这些数据库表之间本身建立和维护了连接关系。

一个数据对象本身可以理解为一个完整的业务模型,这个业务模型可以朝前端去生成API接口服务。

基于数据对象模型去生成接口服务能力

对于数据对象模型的创建和维护,要和API接口服务的生成功能也松耦合开,即数据对象模型本身是独立功能,接口服务的生成也是一个独立功能的设计和实现。

查询服务接口的生成:选择到一个数据模型,然后生成查询服务接口,注意在查询服务接口生成的时候,可以配置选择哪些输入项作为查询条件,然后选择哪些需要显示在查询结果列即可。同时对于查询条件需要考虑支持模糊查询,支持分页查询等场景。

由于数据对象模型在维护的时候已经关联到表和表之间的主外键映射关系,因此后台在实现的时候会自动生成关联查询服务接口能力。

导入服务接口的生成:仍然是选择一个数据模型,然后来生成导入服务接口,如果做的更加灵活可以选择哪些输入项体现在导入服务输入参数上,哪些输入项不体现。对于不体现的输入项需要考虑给相关的空值或默认值。同时对于导入服务类接口需要固定要给异常输出格式接口和返回信息规范格式。

对于导入服务接口的实现,由于一个数据对象本身有业务完整性要求,因此对于导入服务接口本身需要实现在一个事务控制范围内,避免导致分布式事务问题的引起的数据不一致性。

基于数据对象模型来生成类似WSDL,RAML等规范契约文件

数据模型可以起到很好的承上启下左右,基于数据模型我们可以来生成对应的WSDL服务规范契约,也可以生成Http Rest

API接口使用的RAML,WADL文件格式契约等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值