PO、VO、 BO 、DTO、 DAO 和 POJO 的概念及區別
1、Entity
最常用實體類,基本和數據表一一對應,一個實體一張表
2、Bo(business object)
BO(Business Object)業務層對象,是簡單的真實世界的軟件抽象,通常位於中間層。BO 的主要作用是把業務邏輯封裝為一個對象,這個對象可以包括一個或多個其它的對象。舉一個求職簡歷的例子,每份簡歷都包括教育經歷、項目經歷等,我們可以讓教育經歷和項目經歷分別對應一個 PO,這樣在我們建立對應求職簡歷的 BO 對象處理簡歷的時候,讓每個 BO 都包含這些 PO 即可。
3、Vo(view object)
視圖對象,用於展示層,它的作用是把某個指定頁面(或組件)的所有數據封裝起來。簡單理解為頁面展示用的數據。
4、Po(persistant object)
PO(Persistent Object)持久層對象,它跟持久層(通常是關系型數據庫)的數據結構形成一一對應的映射關系,如果持久層是關系型數據庫,那么,數據表中的每個字段(或若干個)就對應PO的一個(或若干個)屬性。通過 DAO 層向上傳輸數據源對象。
5、Dto(data transfer object)
DTO(Data Transfer Object)數據傳輸對象,主要用於遠程調用等需要大量傳輸對象的地方,比如我們有一個交易訂單表,含有 25 個字段,那么其對應的 PO 就有 25 個屬性,但我們的頁面上只需要顯示 5 個字段,因此沒有必要把整個 PO 對象傳遞給客戶端,這時我們只需把僅有 5 個屬性的 DTO 把結果傳遞給客戶端即可,而且如果用這個對象來對應界面的顯示對象,那此時它的身份就轉為 VO。使用 DTO 的好處有兩個,一是能避免傳遞過多的無用數據,提高數據的傳輸速度;二是能隱藏后端的表結構。常見的用法是:將請求的數據或屬性組裝成一個 RequestDTO,再將響應的數據或屬性組裝成一個 ResponseDTO.
6、Pojo(plian ordinary java object)
代表簡單無規則java對象,純的傳統意義的java對象,最基本的Java Bean只有屬性加上屬性的get和set方法。POJO 是 JavaEE 世界里面最靈活的對象,在簡單系統中,如果從數據庫到頁面展示都是 POJO 的話,它可以是 DTO;如果從數據庫中到業務處理中都是 POJO 的話,它可以是 BO;如果從數據庫到整個頁面的展示的話,它也可以是 VO。
7、DAO(Data Access Object)
數據訪問對象,它是一個面向對象的數據庫接口,負責持久層的操作,為業務層提供接口,主要用來封裝對數據庫的訪問,常見操作無外乎 CURD。我們也可以認為一個 DAO 對應一個 POJO 的對象,它位於業務邏輯與數據庫資源中間,可以結合 PO 對數據庫進行相關的操作。
總結: