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

PO(bean、entity等命名):html

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

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

好處是能夠把一條記錄做爲一個對象處理,能夠方便的轉爲其它對象。 架構

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

Business Object業務對象jsp

主要做用是把業務邏輯封裝爲一個對象。這個對象能夠包括一個或多個其它的對象。設計

形象描述爲一個對象的形爲和動做,固然也有涉及到基它對象的一些形爲和動做。好比處理3d

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

這樣處理業務邏輯時,咱們就能夠針對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(以上內容轉自此篇文章)

相關文章
相關標籤/搜索