我在平时开发中经常遇到dto目录或者文件名定位仪xxxxxDto.java的文件,并没有 深入去确认它到底是什么,干什么用?就在我开始进入架构设计过程中,被逼得不得不深入了解基层代码,为了自己方便积累并深知DTO是什么,特此记录,欢迎大家补充。
实体类
也就是经常在entity目录下的javaBean文件,它一般是与Dao层直接关系,代表着数据库某表的字段,用于对持久化的增删改查,也就是说与数据库表一一对应的。
DTO
它一般用在接口层,比如Controller控制器这里,用于对接口的接受参数封装或者返回数据的封装,主要用于传递数据使用。
实体类与DTO的不同
通过以上定义,我们就不难看出,他们用途不一样,所处的目录也是不一样的。最明显的特点就是,DTO可以完全自定义,不需要很多注解,实体类一定是要与数据库表的字段对应。
上图是DTO的一个案例
上图是实际DTO的应用场景,返回自定义数据用到的对象。
解决疑惑
有的朋友会问,我用实体类完全可以替代DTO这里啊,否则我通过控制器传过来的数据还得需要DTO转化为实体类再入库,这不是多此一举吗?我们为什么要这样做,一是防止接口被暴露的同时把你的数据库表结构也暴露出来了,二是处理复杂数据类型的时候,比如list或者二级数组等复杂数据,这样我们使用DTO与实体类的转换,会更清晰不是吗?你像报表还有多表组合的数据,需要返回给前端展示,我们使用实体类是不是不方便呢?处理这种能力的类就是DTO,你也可以叫他实体类,为了区分,我们就叫他DTO。
我这样讲解你能听懂吗?反正我是懂了,在此记录为了我下次的遗忘,你点击收藏是为了你下次的疑惑。欢迎留言讨论。