entity、bo、vo、po、dto、pojo如何理解和區分?

Java開發過程當中,基本實體類包都以entity或者model來稱呼,但是很多項目中,卻以Bo、Vo來命名,面試的時候,也有可能被問到這些問題。那麼,這幾者分別表明什麼意思呢?
Entity
最經常使用實體類,基本和數據表一一對應,一個實體一張表。
Bo(business object)
表明業務對象的意思,Bo就是把業務邏輯封裝爲一個對象(注意是邏輯,業務邏輯),這個對象能夠包括一個或多個其它的對象。經過調用Dao方法,結合Po或Vo進行業務操做。
形象描述爲一個對象的形爲和動做,固然也有涉及到基它對象的一些形爲和動做。好比處理一我的的業務邏輯,該人會睡覺,吃飯,工做,上班等等行爲,還有可能和別人發關係的行爲,處理這樣的業務邏輯時,咱們就能夠針對BO去處理。
再好比投保人是一個Po,被保險人是一個Po,險種信息也是一個Po等等,他們組合起來就是一張保單的Bo。
Vo(value object)
表明值對象的意思,一般用於業務層之間的數據傳遞,由new建立,由GC回收。
主要體如今視圖的對象,對於一個WEB頁面將整個頁面的屬性封裝成一個對象,而後用一個VO對象在控制層與視圖層進行傳輸交換。html

entity、bo、vo、po、dto、pojo如何理解和區分?
Po(persistant object)
表明持久層對象的意思,對應數據庫中表的字段,數據庫表中的記錄在java對象中的顯示狀態,最形象的理解就是一個PO就是數據庫中的一條記錄。
好處是能夠把一條記錄做爲一個對象處理,能夠方便的轉爲其它對象。Vo和Po,都是屬性加上屬性的get和set方法;表面看沒什麼不一樣,但表明的含義是徹底不一樣的。
Dto(data transfer object)
表明數據傳輸對象的意思
是一種設計模式之間傳輸數據的軟件應用系統,數據傳輸目標每每是數據訪問對象從數據庫中檢索數據
數據傳輸對象與數據交互對象或數據訪問對象之間的差別是一個以不具任何行爲除了存儲和檢索的數據(訪問和存取器)
簡而言之,就是接口之間傳遞的數據封裝
表裏面有十幾個字段:id,name,gender(M/F),age……
頁面須要展現三個字段:name,gender(男/女),age
DTO由此產生,一是能提升數據傳輸的速度(減小了傳輸字段),二能隱藏後端表結構
Pojo(plian ordinary java object)
表明簡單無規則java對象
純的傳統意義的java對象,最基本的Java Bean只有屬性加上屬性的get和set方法
能夠額轉化爲PO、DTO、VO;好比POJO在傳輸過程當中就是DTO
Dao(data access object)
表明數據訪問對象的意思,是sun的一個標準j2ee設計模式的接口之一,負責持久層的操做 。這個基本都瞭解,Dao和上面幾個O區別最大,基本沒有互相轉化的可能性和必要,主要用來封裝對數據的訪問,注意,是對數據的訪問,不是對數據庫的訪問。
Controller
表明控制層,主要是Action/Servlet等構成(Spring MVC則是經過@Controller標籤使用)此層業務層與視圖層打交道的中間層,負責傳輸VO對象和調用BO層的業務方法,負責視圖層請求的數據處理後響應給視圖層。
View
表明視圖層的意思,主要是指由JSP、HTML等文件造成的顯示層。
因此實際項目中,通常都是這樣應用的:
控制層(controller-action),業務層/服務層( bo-manager-service),實體層(po-entity),dao(dao),視圖對象(Vo-),視圖層(view-jsp/html)java

相關文章
相關標籤/搜索