V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jiobanma
V2EX  ›  程序员

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

  •  
  •   jiobanma ·
    banmajio · 2020-08-17 18:01:47 +08:00 · 914 次点击
    这是一个创建于 1570 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    实现方式

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

    遇到的问题:

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

    期望的效果

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

    2 条回复    2020-08-18 10:00:47 +08:00
    nl101531
        1
    nl101531  
       2020-08-18 10:00:09 +08:00
    你这种结构,DB 都变了自然什么都要跟着变化。

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

    最近也在做这方面事情,graphQL 带来的好处就是一个入口,按需获取字段,自动关联查询,没发现其他方便的地方。
    nl101531
        2
    nl101531  
       2020-08-18 10:00:47 +08:00
    我微信 mrdear-cn,可以加我交流下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5762 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:08 · PVG 11:08 · LAX 19:08 · JFK 22:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.