Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/babyfish-ct/jimmer
Browse files Browse the repository at this point in the history
  • Loading branch information
babyfish-ct committed Jun 30, 2023
2 parents 7496e26 + 86e78e7 commit 8b64726
Showing 1 changed file with 7 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -108,24 +108,24 @@ fun findBookById(

- Jimmer采用动态实体,只要聚合根类型相同,任何形状的数据结构都用同一个Java/Kotlin类型表达。

- 客户端需要看到丰富的数据类型,同一个实体类型的不同在不同的HTTP接口中返回的形状不一样
- 客户端需要看到丰富的数据类型,同一个实体类型在不同的HTTP接口中返回的形状不一样

这个矛盾,本质上就是服务端和客户端对<ViewMore buttonText="DTO爆炸"><img src={DtoExplosion}/></ViewMore>的认知不同
这个矛盾,本质上就是服务端和客户端对<ViewMore buttonText="DTO爆炸"><img src={DtoExplosion}/></ViewMore>的认知不同

- 服务端视角,即,生产者视角
- 服务端视角,即生产者视角

在生产者眼中,DTO爆炸是一个非常头疼的问题,这意味着自己的开发成本也会急剧上升。

因此,Jimmer使用动态实体配合[对象抓取器](../../query/object-fetcher),在服务端消灭了DTO爆炸。

- 前端视角,即,消费者视角
- 前端视角,即消费者视角

在消费者眼中,DTO爆炸是有益的,每一个业务场景都有精确的返回类型,使用起来体验非常好。*(实现不容易?和我有什么关系?)*

因此,Jimmer服务端能自动生成TypeScript代码,把服务端消灭掉的DTO爆炸在客户端中恢复出来。

:::tip
服务端消灭DTO爆炸,客户端恢复DTO爆炸,这是Jimmer的前后端对接功能的根本价值,也是Jimmer和其他任何自动生成客户端的代码的技术的本质区别
服务端消灭DTO爆炸,客户端恢复DTO爆炸,这是Jimmer的前后端对接功能的根本价值,也是Jimmer和其他任何自动生成客户端代码的技术的本质区别

只有让服务端和客服端使用完全不同的编程模型,才能同时让双方都获得极致的开发体验。
:::
Expand Down Expand Up @@ -361,7 +361,7 @@ export type BookDto = {
```
:::info
很明显,在服务端端被消灭的的DTO爆炸,在客户端被恢复了。
很明显,在服务端被消灭掉的DTO爆炸,在客户端被恢复了。
:::
让我们再看看`${ts_root}/services/BookService.ts`
Expand Down Expand Up @@ -781,4 +781,4 @@ export type BookStoreDto {
},
...省略其他DTO类型定义...
}
```
```

0 comments on commit 8b64726

Please sign in to comment.