VO,DTO,DO,PO区别
何為POJO
POJO(Plain Ordinary Java Object),即簡單Java對象,就是一個我們最常見的普通Java對象,這個概念是被大家叫出來的,它具有一些屬性,然后提供對應(yīng)的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在早期有對其規(guī)范(JavaBeans Spec),它是Java中的可重用組件,主要規(guī)范約定如下:
JavaBean為公共類,并且具有一個空構(gòu)造函數(shù)
所有屬性為私有屬性,提供getter和setter,不應(yīng)該有公共屬性
實現(xiàn)序列化接口:java.io.Serializable
JavaBean已經(jīng)成為Java的一種規(guī)范,也是Java社區(qū)的共同語言,許多工具框架也是遵循JavaBean的規(guī)范的,例如,Spring的BeanUtils,一些Json工具都是基于JavaBean的規(guī)范來實現(xiàn)的,這些都是基于約定,所以也有人把JavaBean叫為可以持久化的POJO。
何為DO
DO(Domain Object),領(lǐng)域?qū)ο?#xff0c;也就是ORM框架中對應(yīng)數(shù)據(jù)庫的對象,業(yè)務(wù)實體,例如,對現(xiàn)實世界中的用戶建模,抽象出來的DO可以叫為UserDO,通常情況下它用于與數(shù)據(jù)庫的數(shù)據(jù)交互,通常也是一個JavaBean。
何為PO
PO(Persistent Object),持久化對象,主要用于持久化層,與數(shù)據(jù)庫對應(yīng),通常也是ORM框架中的實體對象,例如,使用JPA時候的Entity與數(shù)據(jù)庫表做映射,通常是一個JavaBean。
何為DTO
DTO(Data Transfer Object),數(shù)據(jù)傳輸對象,顧名思義就是用于傳輸數(shù)據(jù)的對象,通常用于處于不同架構(gòu)層次或者不同子系統(tǒng)之間的數(shù)據(jù)傳遞,或者用于外部接口參數(shù)傳遞,以便提供不同粒度不同信息的數(shù)據(jù),以免造成困惑干擾,通常也是一個JavaBean。
何為VO
VO(Value Object),就是用于保存數(shù)據(jù)的對象;在提供給頁面使用的時候,也有人解釋為View Object,就是對應(yīng)頁面展示數(shù)據(jù)的對象。
何為DAO
DAO(Data Access Object),數(shù)據(jù)訪問對象,與數(shù)據(jù)庫做交互的對象,提供不同的接口訪問數(shù)據(jù)庫來實現(xiàn)對數(shù)據(jù)庫的操作,而接口使用的數(shù)據(jù)交互通常就是PO或者DO,通過它可以使用面向?qū)ο蟮姆绞絹砼c數(shù)據(jù)庫交互。
總結(jié)
DO、PO、VO、DTO等其實都是一個JavaBean,只是應(yīng)用的范圍不同,表示的意義不同,而這些不同是Java這么多年來形成的一種約定,這種習(xí)慣形成Java程序員之間一種共識
DO和PO大部分時間是一樣的,不過PO更傾向于有狀態(tài)的對象,例如,使用Hibernate的時候,通過DAO操作過的對象會被框架所持有,如果一旦對其操作,在Session關(guān)閉的時候會寫回數(shù)據(jù)庫,這個時候使用PO就要非常小心,特別是與其他業(yè)務(wù)層交互的時候,最好轉(zhuǎn)成DTO或者VO提供數(shù)據(jù),不能把持久化對象暴露出去,不然可能會導(dǎo)致數(shù)據(jù)被修改
在使用這類對象的時候,我們還是要明白其意義,然后在合適的場景使用,畢竟這是Java形成的通用語言,想要讀懂他人代碼就要理解,想要他人能讀懂自己的代碼就要遵循
總結(jié)
以上是生活随笔為你收集整理的VO,DTO,DO,PO区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是IMU?
- 下一篇: 音频格式wav与mp3和wma的区别与音