吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2362|回复: 7
收起左侧

[求助] java dto层是做什么的?

[复制链接]
积木工具箱 发表于 2020-12-19 19:04
entity层实例类,dao层数据库操作,service业务层,controller层
dto层的意义在哪?我看视频好像是封装dao层的返回值给业务层用

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

寒尘丶Coldust 发表于 2020-12-19 19:30
DTO用来封装一些前端页面需要的数据
比如User实体里 有id username password之类的
还有订单实体 List<Order>

前端需要当前用户的信息和所有订单
明显不能把User实体整个给前端 不然密码就暴露了

这时候就需要一个DTO
private String username;
private List<Order> orderList;

把需要的信息包一下丢给前端去
夜莺高歌 发表于 2020-12-19 19:43
在Spring MVC中,对数据库的访问操作在DAO层(数据持久层)。规划DAO层时,一般来说先规划DAO层接口,接口声明了具体的数据库访问操作方法,方法的实现由具体数据库操作类来完成,Service层需要对数据库进行访问时,只需要调用DAO层的接口就可以,而不用关心具体的实现类。
零下八度 发表于 2020-12-19 19:47
dto不算是独立一层,只是为了输出到前端时使用。

你可以当是 entity 是数据库的模型映射,它的属性跟数据库的字段是一一对应的,dto 却是由业务决定的,可能是用于整合信息,也可能是精简信息。

整合信息。有时候,一个entity实体并不足以满足前端的业务,比如你现在做统计业务,总和啊,平均值啊,最大值,最小值之类的,entity 一般是没有这些的。
你各种计算整合之后,建了一个新的实体(dto)存放这些整合之后的信息,返回给前端使用。
又或者你想在前端显示一些资料,这些资料是关联多个表查询出来的,如果你不新建别的实体来整合这些信息,用任何一个entity,你都满足不了,还是得用一个新的实体整合这些信息,再输出给前端。


精简信息。我本来是想在资料卡片看看这个用户的姓名啊,昵称啊,性别啊,个性签名啊,就够了。这时候你用entity却是连我的密码,银行卡资料都暴露了。
所以,用dto存储你需要展示的信息,别的一个都不给,给前端返回这个dto。
上官元恒 发表于 2020-12-19 20:05
数据传输对象(DTO),当然是传输数据用啊,传递前端数据,传递方法调用的数据
天使3号 发表于 2020-12-19 21:00
寒尘丶Coldust 发表于 2020-12-19 19:30
DTO用来封装一些前端页面需要的数据
比如User实体里 有id username password之类的
还有订单实体 List

返回给前端其实叫VO,view Object。
DTO的话我感觉是数据库里查出来,DAO->Service,然后在各个Service之间流转的传输对象,简单的话直接给前端,有时候还要转一下VO,按前端所需返回,不知道理解的对不对,请指教
沧海神月 发表于 2020-12-19 21:38
天使3号 发表于 2020-12-19 21:00
返回给前端其实叫VO,view Object。
DTO的话我感觉是数据库里查出来,DAO->Service,然后在各个Service ...

感觉你俩说的有点像同一个东西。说白了,就是数据库里面查出的字段,并不是每个字段都需要返给前段,所以用DTO过滤一下,就上面所说的,传user信息,只给前台传姓名,性别,手机号,就不给前段传密码;
天使3号 发表于 2020-12-25 13:51
沧海神月 发表于 2020-12-19 21:38
感觉你俩说的有点像同一个东西。说白了,就是数据库里面查出的字段,并不是每个字段都需要返给前段,所以 ...

还有一点,查数据库的时候可能要JOIN多表查询,会有很多业务字段,这时候用DTO接一下,等要返回前端的时候再VO接一下(可能字段又要少一些,或者变一些),就很清晰了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 10:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表