跳到主要内容

暴露功能

通过上一篇的介绍,我们快速预览了Jimmer随心所欲地查询任意形状数据结构的强大能力。

Jimmer实体既是强类型的也是动态的,这种动态性可以轻松表达任何数据结构并直接返回。

这样就消除了

,让服务端无需构建DTO类型,只需面向实体编程,将服务端的开发成本降低到了极致。

然而,对于客户端开发人员而言,得到一切皆有可能的动态数据结构是一件非常头疼的事情,客户端希望每个查询API都精确地定义其返回的数据格式的类型。

为此,Jimmer提供了两种方法,二者都能为客户端提供一流的API支持。

  • 直接返回动态实体

    作为一个综合性方案,Jimmer不局限于ORM,它会为HTTP客户端生成客户端代码。在生成的客户端代码中为每一种具体的数据结构定义精确的DTO类型。

    提示

    如果服务自己并不使用查询结果,而是直接作为HTTP Response,适合采用这种方式。

  • Jimmer支持一种叫DTO的编程语言,通过它,可以以极其廉价的成本快速定义用于输出的数据结构的DTO类型。

    提示

    当以下任何一个条件满足时,可以采用这种方式。

    • 查询结果并不是为了作为HTTP Response直接返回,而是服务内部自己使用。这时,使用查询结果的业务代码不希望得到编译时安全性稍弱的动态实体 (虽然Jimmer实体仍然是强类型的)

    • 前端团队不接受彼此关联的多个对象,要求将所有非集合关联属性进行flat操作,形成一个超大孤单对象,并对此显得非常固执。 (这种情况会在相关章节详细介绍,这里不做深入探讨)