暴露功能
通过上一篇的介绍,我们快速预览了Jimmer随心所欲地查询任意形状数据结构的强大能力。
Jimmer实体既是强类型的也是动态的,这种动态性可以轻松表达任何数据结构并直接返回。
这样就消除了
,让服务端无需构建DTO类型,只需面向实体编程,将服务端的开发成本降低到了极致。然而,对于客户端开发人员而言,得到一切皆有可能的动态数据结构是一件非常头疼的事情,客户端希望每个查询API都精确地定义其返回的数据格式的类型。
为此,Jimmer提供了两种方法,二者都能为客户端提供一流的API支持。
-
直接返回动态实体
作为一个综合性方案,Jimmer不局限于ORM,它会为HTTP客户端生成客户端代码。在生成的客户端代码中为每一种具体的数据结构定义精确的DTO类型。
提示如果服务自己并不使用查询结果,而是直接作为HTTP Response,适合采用这种方式。
-
Jimmer支持一种叫DTO的编程语言,通过它,可以以极其廉价的成本快速定义用于输出的数据结构的DTO类型。
提示当以下任何一个条件满足时,可以采用这种方式。
-
查询结果并不是为了作为HTTP Response直接返回,而是服务内部自己使用。这时,使用查询结果的业务代码不希望得到编译时安全性稍弱的动态实体 (虽然Jimmer实体仍然是强类型的)。
-
前端团队不接受彼此关联的多个对象,要求将所有非集合关联属性进行
flat
操作,形成一个超大孤单对象,并对此显得非常固执。 (这种情况会在相关章节详细介绍,这里不做深入探讨)。
-