Java中PO、BO、VO、DTO、POJO、DAO概念及其作用和項目實例圖(轉)

Java中PO、BO、VO、DTO、POJO、DAO概念及其作用和項目實例圖

PO(bean、entity等命名):

Persistant Object持久對象,數據庫表中的記錄在java對象中的顯示狀態

最形象的理解就是一個PO就是數據庫中的一條記錄。

好處是可以把一條記錄作爲一個對象處理,可以方便的轉爲其它對象。 

BO(service、manager、business等命名):

Business Object業務對象

主要作用是把業務邏輯封裝爲一個對象。這個對象可以包括一個或多個其它的對象。

形象描述爲一個對象的形爲和動作,當然也有涉及到基它對象的一些形爲和動作。比如處理

一個人的業務邏輯,有睡覺,吃飯,工作,上班等等形爲還有可能和別人發關係的形爲。

這樣處理業務邏輯時,我們就可以針對BO去處理。

VO(from也有此寫法) :

Value Object值對象

主要體現在視圖的對象,對於一個WEB頁面將整個頁面的屬性封裝成一個對象。然後用一個VO對象在控制層與視圖層進行傳輸交換。

DTO (經過處理後的PO,可能增加或者減少PO的屬性):

Data Transfer Object數據傳輸對象

主要用於遠程調用等需要大量傳輸對象的地方。

比如我們一張表有100個字段,那麼對應的PO就有100個屬性。

但是我們界面上只要顯示10個字段,

客戶端用WEB service來獲取數據,沒有必要把整個PO對象傳遞到客戶端,

這時我們就可以用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端以後,如果用這個對象來對應界面顯示,那此時它的身份就轉爲VO 

POJO(POJO是一種概念或者接口,身份及作用隨環境變化而變化) :

POJO有一些Private的參數作爲對象的屬性。然後針對每個參數定義了get和set方法作爲訪問的接口

Plain Ordinary Java Object簡單Java對象

即POJO是一個簡單的普通的Java對象,它不包含業務邏輯或持久邏輯等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不繼承或不實現任何其它Java框架的類或接口。

POJO對象有時也被稱爲Data對象,大量應用於表現現實中的對象。 

一個POJO持久化以後就是PO。

直接用它傳遞、傳遞過程中就是DTO

直接用來對應表示層就是VO 

DAO(Data Access Object數據訪問對象):

這個大家最熟悉,和上面幾個O區別最大,基本沒有互相轉化的可能性和必要.

主要用來封裝對數據庫的訪問。通過它可以把POJO持久化爲PO,用PO組裝出來VO、DTO

Controller控制層主要是Action/Servlet等構成(目前Spring MVC則是通過@Controller標籤使用)

此層業務層與視圖層打交道的中間層,負責傳輸VO對象和調用BO層的業務方法,負責視圖層請求的數據處理後響應給視圖層。

View(視圖層)

主要是指由JSP、HTML等文件形成的顯示層。

總結一下要用具體的X0需要看具體環境及項目架構,在不同的層、不同的應用場合,對象的身份也不一樣,而且對象身份的轉化也是很自然的。就像你對老婆來說就是老公,對父母來說就是子女。設計這些概念的初衷不是爲了唬人而是爲了更好的理解和處理各種邏輯,讓大家能更好的去用面向對象的方式處理問題。

在平時開發項目中大家千萬過度設計各層,因爲這樣會帶來大量的工作和重複工作。如果不是大型系統可簡化一些層,因爲技術是爲應用服務的。

上述名詞在實際項目的應用舉例:

控制層(controller-action),業務層/服務層( bo-manager ),實體層(po-entity),dao(dao),視圖對象(Vo-本項目省略),視圖層(view-jsp/html)

 

參考:

http://www.360doc.com/content/14/1225/14/15242507_435666535.shtml(以上內容轉自此篇文章)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章