POJO与JavaBean
首先,咱们来理一理POJO与JavaBean的关系。
POJO(Plain Ordinary Java Object),直译为中文就是简单Java对象,这种Java对象中只包含对象属性和set、get的基本方法。
说到什么是JavaBean,从结构上来说具备以下几个结构特点的对象就叫JavaBean:
(1)所有属性为private。
(2)提供默认构造函数。
(3)提供get和set方法。
(4)实现serializable接口,是可以序列化的。
所以说,POJO其实就是一种比JavaBean更加简单的Java对象,如果给POJO加上构造函数以及序列化,那么两种就没有区别了。
各种XXO
然后,咱们再来看看,平时经常会遇到的各种XXO,刚工作的小伙伴肯定会被这几个XXO搞得很迷惑。
DAO
DAO(Data Access Object),数据库访问对象,在MVC设计模式中,DAO层直接与数据库进行交互,为service层提供读写数据库的接口。
DTO
DTO(Data Transform Object )数据传输对象,在数据传输过程中使用的对象,DTO中的数据可以来自不同的表。
VO
VO(Value Object或 View Object), 值对象,用于页面显示的对象,和DTO应该没有本质区别,dto传输到前端后,用于界面显示的DTO就变成了vo。
PO
PO(Persistent Object) 持久化对象。所谓的持久化对象,表示这个对象的属性与数据库表中的字段一一对应。
在这里想重点解释一下,PO与DTO、 VO的区别有两点:
(1)VO的属性可以根据需求进行设计,比如说表中有100个字段,但是需求并不需要返回所有的字段信息,只要其中50个。那么我们在设计vo时只要把我们需要计入与这50个字段相对应的属性就可了,不需要包含所有的字段。
(2)PO的属性是和表中的字段一一对应的,那么也就是说,PO的属性只来自一个表。而DTO和VO的属性可以来自多个表,具体情况是由业务需求决定的。
以上介绍的DTO, PO以及VO本质上都是Javabean,给他们起这么多不同的名字的主要目的是为了区别他们的应用场景,有点巧立名目,换汤不换药的意思。