实体类对象的简单解析
- 1.VO
- 2.PO
- 3.DO
- 4.DTO
- 简单图例
- 案例:
最近开始慢慢开学,有许多的事情要弄;博客都好久没写写了;趁今天还有点时间(鬼知道明天又要做什么事情),简单回顾一下几个实体类,理清一下。这只是本人的见解,有些不到位的地方还希望多多指正。
1.VO
全称:View Object 视图对象
用途:
1.将form表单数据转换成实体类(接收浏览器的数据)
2.将发送给前端的数据封装好(把数据给浏览器让浏览器显示)
简单来说:VO就是跟前端数据打交道的,不是你传给我就是我传给你。
2.PO
全称:Persistent Object 持久化对象
用途:
1.将数据封装好存入数据库
2.将数据库查询出来的数据映射到实体类
简单来说:PO就是跟数据库打交道的,看其名称,持久化对象(不考虑redis的AOF和RDB),就是将数据持久化到磁盘中。
3.DO
全称:Data Object 数据对象
用途:
我认为是:从一切工具类(es,redis等)查询到的数据封装成对象
4.DTO
全称:Data Transfer Object 数据传输对象
用途:从一方到另一方的数据传输(例如从提供方到调用方的传输);例如整合了PO和DO然后传输到service层在转成PO进行数据持久化。
简单图例
案例:
之前写个一个简单的订餐系统Demo。我们都知道既然设计到订单系统,最简单的那么就是至少**两张表(订单表和订单详情表)**了
那么,当我们需要查询这个用户的订单的时候;前端传给一个用户唯一标识符,我们根据标识符先查找到这个用户的订单ID(order_id),然后根据用户的ID在查找到用户所购买的商品(order_detail中对应的order_Id)那么,用户订单和商品详情都是简单的PO;我们需要在service层查到后,将其封装成DTO,也就是用户订单PO在加上一个List
列表用于存放用户所购买的商品,这就组成了DTO,将DTO传送给controller层,再在controller层进行相应数据转换到前端,转化后的数据就是VO。
当然,如果有一些其他的因素要存到redis中,那么也是接收的前端的数据VO然后从redis中查询出DO,进行组装;此时DTO=VO+DO,传入到service层,service层在对应解析成不同的PO,分别插入到不同的表中去。