DTO、VO、Entity的区别

对于这些概念,网上众说纷纭。不要纠结他是什么,不要纠结DTO与VO的区别是什么。在实际编码过程中,按照你们研发组的规范来做就好了。可能你觉得划分的比较细,专业性比较强。但用处不大。

在我的总结解释中,以下几个概念更具合理性。希望知道。[en]The following concepts are more reasonable in my summary explanation. Hope to know.

  • VO(View Object): 视图对象,用于展示层,这很好理解,就是页面所需数据封装。
  • VO(Value Object): 值对象,跟引用对象(Reference Object)做区分。 类似 int,long这种类型,值一样他们就一样,但是本身又是一个Object。
  • DTO(Data Transfer Object): 数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载。( 个人理解:原先需要获取用户信息和用户订单需要调用俩个接口,将返回数据整合为一个DTO,调用一次就可以获取所有数据
  • Entity: 实体类,一般与持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应Entity的一个(或若干个)属性。

我照搬了这个概念。让我举一个例子来说明具体的区别。[en]I copied the concept. Let me give an example to illustrate the specific differences.
需求:返回某个用户信息和其账号订单数量。

阿里巴巴开发手册:

领域模型 命名规约
1) 数据对象:xxxDO,xxx 即为数据表名。
2) 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。
3) 展示对象:xxxVO,xxx 一般为网页名称。
4) POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。

可以看到,人家阿里的规范中VO就是View Object。也或者说View Object = Value Object。

疑问

相反,当发送请求时,例如添加用户时,会看到这一点。使用DTO接收数据。因为无论前端显示的是帅哥还是男士,我们只需要数字1![en]See this, on the contrary, when * send a request * , such as adding a user. Use * DTO to receive data * . Because no matter whether the front end shows a handsome boy or a man, we only need the number 1!

有些人会想知道什么是VO。不要被这些概念搞糊涂了,我上面写的只是为了帮助理解这些概念。在实际编码中,实体关联的表实体类Entity无法满足页面要求的数据。只需添加一个VO即可展开所需属性!这是多么简单的事情。你为什么这么复杂?[en]Some people will wonder what kind of VO * stands for. Don’t be confused by these concepts, what I wrote above is just to help understand the concepts. In the * actual coding * , * an Entity associated table entity class, Entity can not meet the data required by the * * page. Just add a VO to expand the required attributes * ! What a simple thing. Why are you so complicated?
适合自己的才是最好的!!!*

个人整理参考,存在纰漏或错误的地方,欢迎各位批评指正!

Original: https://blog.csdn.net/weixin_45056780/article/details/125293579
Author: 世代农民
Title: DTO、VO、Entity的区别

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/6091/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部