首先這些對象都應用都是一些單詞的簡稱,也是一種應用思想,故其他語言也可以使用,在 Java? 里比較常見這些對象吧。下面來一一解釋。
一、POJO(Plain Ordinary Java Object),簡單無規則java對象
簡單而言,就是一個簡單的對象,而且沒有任何規則約束。有的時候拿 POJO? 來泛指用來做傳輸對象Java bean (包括今天要介紹的 DTO? 、 VO? 、 BO? 、 PO? 等)也是可以的。
二、DAO(Data?Access?Object),數據訪問對象
通常是和數據層打交道的最后一層,通過 DAO? 對數據庫做識別操作,最終返回我們想要的數據。通常和我們的 PO? 、 BO? 等基礎類型,如List 、Map 等結合使用。
三、DTO(Data?Transfer?Object),數據傳輸對象
單純用來數據傳輸的對象。我們有的項目又分InDto 和OutDto ,顧名思義就是輸入和輸出的 Dto? 。
主要用于遠程調用等需要大量傳輸對象的地方。
比如我們一張表有100個字段,那么對應的PO就有100個屬性。
但是我們界面上只要顯示10個字段,
客戶端用WEB service來獲取數據,沒有必要把整個PO對象傳遞到客戶端,
這時我們就可以用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端以后,如果用這個對象來對應界面顯示,那此時它的身份就轉為VO
四、PO(Persistant Object)持久對象
在o/r 映射的時候出現的概念,如果沒有o/r映射,就沒有這個概念存在了。通常對應數據模型(數據庫),本身還有部分業務邏輯的處理,可以看成是與數據庫中的表相映射的java對象。
最簡單的 PO? 就是對應數據庫中某個表中的一條記錄,多個記錄可以用 PO? 的集合。 PO? 不包含業務邏輯和數據邏輯。就是一個Entity 或者說ModelEntity 。
PO中應該不包含任何對數據庫的操作。
五、BO(Business?Object),業務對象
我經常使用的一個,它是和業務掛鉤的,簡單來說,我們每個業務可能需要很多 PO? (數據庫表)來組成,而我們返回前端頁面或者返回給調用方的時候,我們需要組合。而這個時候, BO? 就派上用場了,它就是一個對 PO? 的組合,也可以就是 PO? ,只是出發點是滿足業務的傳輸對象。可以組合PO、VO。
六、VO(Value Object),值對象