使用 GraphQL 做数据服务如何实现自动化

2020-08-17 18:01:47 +08:00
 jiobanma

目前在做一个基础数据服务

需要的功能其实就是数据聚合,以及按需查询,按需返回(方便前端使用)。 搭建的 demo 使用到的工具是 SpringBoot+GraphQL+Mybatis+PgSQL

实现方式

定义 scheam 文件,程序解析 scheam,Fechers 里像以前的 restful 服务一样调用 service,通过 Mybatis 从数据库获取数据,然后按照 scheam 定义的结构将数据塞到 Object 或者 List 中。

遇到的问题:

如上述实现方式,发现一个问题就是并没有简化代码实现。当我的数据库中有改动,比如增加字段。按照上述实现方式,我需要修改 scheam 、修改 JavaBean 、修改 Fechers 数据获取逻辑、修改 MyBatis 中 xml 的 sql 语句。而这种实现方式可能最直观的好处就是前端使用更加方便了,但对于服务来说,修改一个数据库字段,需要修改的内容太多了。

期望的效果

有没有什么实现思路,让服务做更少的事情?比如修改数据库字段后,对于代码的修改很少,或者尽可能的不修改代码,而是通过配置去响应修改内容(类似于热部署的需求)。 简而言之,尽可能的实现自动化或半自动化?

878 次点击
所在节点    程序员
2 条回复
nl101531
2020-08-18 10:00:09 +08:00
你这种结构,DB 都变了自然什么都要跟着变化。

想不变就需要动态化,将 DB 这一层与 GraphQL 解耦,可以理解为 service 成调用的都是一个通用查询服务,这个查询服务可以动态配置化。不过这样改动又得不偿失。。。

最近也在做这方面事情,graphQL 带来的好处就是一个入口,按需获取字段,自动关联查询,没发现其他方便的地方。
nl101531
2020-08-18 10:00:47 +08:00
我微信 mrdear-cn,可以加我交流下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/699054

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX