美文网首页Java In Mind
DO、VO、DTO...XXOO,你弄明白了么

DO、VO、DTO...XXOO,你弄明白了么

作者: SevenLin1993 | 来源:发表于2019-10-11 08:45 被阅读0次

技术公众号:Java In Mind(Java_In_Mind),欢迎关注!

背景

我相信,刚开始学习接触企业代码的时候,一定会发现,工程中充斥着各种XO:DO、VO、DTO、DAO,还有各种名词:POJO,JavaBean,Domain等等,这些貌似看起来都一样,又好像用在不同的地方,记得之前一个前端同事调侃说:“我不想学Java,各种OOO,脑壳疼!”,这里结合自己的理解对这几个名词做些介绍。

何为POJO

POJO(Plain Ordinary Java Object),即简单Java对象,就是一个我们最常见的普通Java对象,这个概念是被大家叫出来的,它具有一些属性,然后提供对应的getter和setter,如下:

public class Foo {
    private String name;
    private String type;
    public String getName(){
        return this.name;
    }
    public void setName(String name){
        this.name = name;
    }
    public String getType(){
        return this.Type;
    }
    public void setType(String type){
        this.type = type;
    }
}

何为JavaBean

JavaBean,可序列化的POJO,sun在早期有对其规范(JavaBeans Spec),它是Java中的可重用组件,主要规范约定如下:

  • JavaBean为公共类,并且具有一个空构造函数
  • 所有属性为私有属性,提供getter和setter,不应该有公共属性
  • 实现序列化接口:java.io.Serializable

JavaBean已经成为Java的一种规范,也是Java社区的共同语言,许多工具框架也是遵循JavaBean的规范的,例如,Spring的BeanUtils,一些Json工具都是基于JavaBean的规范来实现的,这些都是基于约定,所以也有人把JavaBean叫为可以持久化的POJO。

何为DO

DO(Domain Object),领域对象,也就是ORM框架中对应数据库的对象,业务实体,例如,对现实世界中的用户建模,抽象出来的DO可以叫为UserDO,通常情况下它用于与数据库的数据交互,通常也是一个JavaBean。

何为PO

PO(Persistent Object),持久化对象,主要用于持久化层,与数据库对应,通常也是ORM框架中的实体对象,例如,使用JPA时候的Entity与数据库表做映射,通常是一个JavaBean。

何为DTO

DTO(Data Transfer Object),数据传输对象,顾名思义就是用于传输数据的对象,通常用于处于不同架构层次或者不同子系统之间的数据传递,或者用于外部接口参数传递,以便提供不同粒度不同信息的数据,以免造成困惑干扰,通常也是一个JavaBean。

何为VO

VO(Value Object),就是用于保存数据的对象;在提供给页面使用的时候,也有人解释为View Object,就是对应页面展示数据的对象。

何为DAO

DAO(Data Access Object),数据访问对象,与数据库做交互的对象,提供不同的接口访问数据库来实现对数据库的操作,而接口使用的数据交互通常就是PO或者DO,通过它可以使用面向对象的方式来与数据库交互。

总结

  1. DO、PO、VO、DTO等其实都是一个JavaBean,只是应用的范围不同,表示的意义不同,而这些不同是Java这么多年来形成的一种约定,这种习惯形成Java程序员之间一种共识
  2. DO和PO大部分时间是一样的,不过PO更倾向于有状态的对象,例如,使用Hibernate的时候,通过DAO操作过的对象会被框架所持有,如果一旦对其操作,在Session关闭的时候会写回数据库,这个时候使用PO就要非常小心,特别是与其他业务层交互的时候,最好转成DTO或者VO提供数据,不能把持久化对象暴露出去,不然可能会导致数据被修改
  3. 在使用这类对象的时候,我们还是要明白其意义,然后在合适的场景使用,毕竟这是Java形成的通用语言,想要读懂他人代码就要理解,想要他人能读懂自己的代码就要遵循

相关文章

  • DO、VO、DTO...XXOO,你弄明白了么

    技术公众号:Java In Mind(Java_In_Mind),欢迎关注! 背景 我相信,刚开始学习接触企业代码...

  • vo/dot关系

    DO,DTO和VO的使用 DO,DTO和VO的使用 DO:对应数据库表结构 VO:一般用于前端展示使用 DTO:用...

  • 2018-09

    dto、do、vo、bo、ao lombok

  • 基金A和C,弄明白了么

    这算是小白基金投资的第三篇。今天说一下基金后缀最常见的A和C分别代表什么。 基金后缀带A的,指A类基金。基金申购、...

  • DO,DTO,VO

    在日常的项目开发中,VO对应于页面上需要显示的数据(表单),DO对应于数据库中存储的数据(数据表),DTO对应于除...

  • 浅析VO、DTO、DO、PO的概念、区别和用处

    浅析VO、DTO、DO、PO的概念、区别和用处

  • Ai-Reads:《算法图解》读书笔记

    简短点评:爱因斯坦说,“如果你不能把它解释给你外婆听,那么你就没有弄明白。”(You do not really ...

  • BeanUtils.copyProperties

    开发中经常有一些DO转VO,VO转DO,DTO转DO等等的需求,一般情况下我们会一个一个字段的set,如下: 字段...

  • 浅析VO、DTO、DO、PO的概念、区别和用处

    浅析VO、DTO、DO、PO的概念、区别和用处 本篇文章主要讨论一下我们经常会用到的一些对象:VO、DTO、DO和...

  • VO、DTO与DO

    在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应于数据库中存储的数据(数据表),DTO对应于除二者之...

网友评论

    本文标题:DO、VO、DTO...XXOO,你弄明白了么

    本文链接:https://www.haomeiwen.com/subject/ohozpctx.html