当前位置: 首页 > news >正文

entity dto vo

DTO、VO 超通俗大白话讲解
这俩就是Java后台开发里专门分工、分层用的普通实体类,本质都是Java Bean,只是用途和出场位置完全不一样。



一、先一句话秒懂区别

名词 全称 核心作用 谁和谁之间传数据
DTO Data Transfer Object(数据传输对象) 后端内部、服务之间/接口收发 数据库/Service ↔ Controller
VO View Object(视图展示对象) 专门给前端/页面看的数据 Controller ↔ 前端页面/客户端



二、逐个拆开讲+和你现在工具的关系

1. DTO(最常用,你天天在用)

- 定位:中转搬运工
- 场景:
1. 数据库查出来的是 Entity (和数据库表一一对应)
2. 不能直接把Entity往外丢,太危险(密码、敏感字段会泄露)
3. 把Entity需要的字段,拷贝到DTO里,在后端各个层、接口之间传递
- 特点:
- 只存业务必要数据,干净精简
- 不包含页面展示专属字段
- 正好适配你写的 BeanUtilz.cp() 、 copyProperties

日常高频操作: cp(dto, entity) 一行完成Entity→DTO转换

举例子
数据库UserEntity:id、账号、密码、姓名、手机号、创建时间
UserDTO:只保留账号、姓名、手机号,剔除密码,安全传给上层逻辑/接口。



2. VO(给前端最终看的)

- 定位:页面专属模特
- 场景:
1. 要返回给前端、APP、页面展示的数据
2. 字段完全按照前端需求定制,想怎么展示就怎么改
- 特点:
- 可以加很多页面专属字段(比如「状态中文文案、格式化日期、拼接展示名」)
- 字段命名、格式完全迁就前端
- 绝对不碰数据库底层字段
- 操作流程:DTO → VO,再把VO返回给前端

举例子
UserVO:姓名、展示用完整生日、拼接好的地址、状态文案「已启用/已禁用」,专门用来渲染页面。



三、完整分层流转链路(一看就懂)

plaintext
数据库表 → Entity实体类
↓ 【用你BeanUtilz.cp拷贝】
Service层 → DTO(后端内部流转、安全脱敏)
↓ 【再次属性拷贝】
Controller → VO(专门包装、适配前端)

前端页面展示




四、为什么不直接用一个类?分层的意义

1. 安全隔离:Entity不能直接暴露给前端,防止敏

感字段泄露
2. 解耦:数据库改字段,DTO/VO可以不动,前端完全无感知
3. 各司其职:
- Entity:只忠诚对应数据库表
- DTO:只负责后端数据搬运
- VO:只对前端展示友好
4. 方便复用:一套通用拷贝工具(就是你现在的 BeanUtilz )全项目到处复用



五、和你现在工具的完美配合

你的 BeanUtilz 就是专门干这个分层拷贝的:

1. cp(userDto, userEntity) :Entity → DTO
2. cp(userVo, userDto) :DTO → VO
3. toJson(vo) :快速打印VO完整JSON,调试接口、看返回结构超方便



补充:其他容易混淆的名词

- BO:Business Object 业务层对象(日系老项目偶尔用)
- POJO:最普通的无规则Java实体,上面这些本质都属于POJO

要不要我结合你当前的项目,给你写一套 Entity→DTO→VO 的完整代码示例,直接就能跑、对照着彻底练手?

http://www.cnnetsun.cn/news/2056152.html

相关文章:

  • 告别双系统!Win11下用WSL2+Ubuntu 20.04打造无缝AI开发环境(附Anaconda/PyTorch配置)
  • Udio 音频生成 API 集成指南
  • 智慧教育中的个性化学习与教学评估
  • 混合块注意力机制(MoBA)原理与实现详解
  • 国产化即时通讯软件怎么选?BeeWorks 的“全栈信创”答卷
  • 美的智能家电云端依赖的终结:Home Assistant本地网络控制方案
  • 3步解锁音乐自由:qmc-decoder帮你将QQ音乐专有格式转换为MP3/FLAC
  • 【嵌入式C安全适配LMM终极指南】:20年老兵亲授3大不可绕过的内存隔离方案
  • Obsidian Excel插件:一站式表格处理解决方案提升笔记效率90%
  • 无法解析的外部符号
  • Swagger接口文档除了在线看,还能怎么用?我整理了3种本地化导出方案(含Word/Excel)
  • PyCharm配置PyQt5开发环境避坑指南:解决QtDesigner路径找不到、PyUic转换失败等常见问题
  • 轻松发打卡:接龙管家 AI 30 秒创建,自动汇总超省心
  • 百度Create大会双主论坛议程揭晓,多项重磅升级发布将集中亮相
  • iOS调试中debugserver常见问题详解:连接失败、权限错误与反调试应对
  • TikTok Shop图片总被驳回?AI套图直接生成平台合规图
  • Aiadmin-3个月拆了1000个爆款标题,最后浓缩在这条指令里
  • Kronos部署教程:构建智能任务执行平台
  • 2026金三银四Java岗最全面试攻略,吃透25个技术栈Offer拿到手软
  • 算法训练营第十三天|454.四数相加II
  • 程序员必看:符号解析的底层原理与实战避坑指南(附GCC命令详解)
  • 13、理想变压器的工作原理详解
  • 极限概念解析与计算方法全攻略
  • NCMconverter:3步解锁网易云加密音乐,让音乐真正属于你
  • 新榜智汇:具备合规化运营能力的中大型企业GEO营销工具
  • 宝藏级|摩羯座影视(mojiez.com):全站免费!4K/原盘/网盘/BT种子下载一站搞定
  • jenkins配置前端部署
  • 告别点灯焦虑:用STM32CubeMX快速配置蓝桥杯G431开发板的GPIO与时钟
  • 【Android】告别手机小屏:在PC端无缝操控Termux Linux终端的完整指南
  • 【WinForm UI控件系列】Blower 鼓风机控件