1. <em id="2qvri"><tr id="2qvri"></tr></em>
      1. 首頁»數據庫»詳述 PO VO BO DTO DAO 和 POJO 的概念及區別

        詳述 PO VO BO DTO DAO 和 POJO 的概念及區別

        來源:維C果糖 發布時間:2017-08-17 閱讀次數:

          說實話,我相信對于剛接觸 PO、VO、BO、DTO、DAO 和 POJO 這些概念的同學來說,大都會有一種“這都是什么鬼?”的感覺,可謂是云里霧里,不知今夕何夕!現在,就讓咱們一起揭開這些 “X”O 的面紗,看看它們的廬山真面目。首先,來個圖瞅瞅:

          第 1 個:DAO

          DAO(Data Access Object)數據訪問對象,它是一個面向對象的數據庫接口,負責持久層的操作,為業務層提供接口,主要用來封裝對數據庫的訪問,常見操作無外乎 CURD。我們也可以認為一個 DAO 對應一個 POJO 的對象,它位于業務邏輯與數據庫資源中間,可以結合 PO 對數據庫進行相關的操作。

          第 2 個:PO

          PO(Persistent Object)持久層對象,它是由一組屬性和屬性的get和set方法組成,最簡單的 PO 就是對應數據庫中某個表中的一條記錄(也就是說,我們可以將數據庫表中的一條記錄理解為一個持久層對象),多個記錄可以用 PO 的集合,PO 中應該不包含任何對數據庫的操作。PO 的屬性是跟數據庫表的字段一一對應的,此外 PO 對象需要實現序列化接口。

          第 3 個:BO

          BO(Business Object)業務層對象,是簡單的真實世界的軟件抽象,通常位于中間層。BO 的主要作用是把業務邏輯封裝為一個對象,這個對象可以包括一個或多個其它的對象。舉一個求職簡歷的例子,每份簡歷都包括教育經歷、項目經歷等,我們可以讓教育經歷和項目經歷分別對應一個 PO,這樣在我們建立對應求職簡歷的 BO 對象處理簡歷的時候,讓每個 BO 都包含這些 PO 即可。

          第 4 個:VO

          VO(Value Object)值對象,通常用于業務層之間的數據傳遞,和 PO 一樣也是僅僅包含數據而已,但 VO 應該是抽象出的業務對象,可以和表對應,也可以不對應,這根據業務的需要。 如果鍋碗瓢盆分別為對應的業務對象的話,那么整個碗柜就是一個值對象。此外,VO 也可以稱為頁面對象,如果稱為頁面對象的話,那么它所代表的將是整個頁面展示層的對象,也可以由需要的業務對象進行組裝而來。

          第 5 個:DTO

          DTO(Data Transfer Object)數據傳輸對象,主要用于遠程調用等需要大量傳輸對象的地方,比如我們有一個交易訂單表,含有 25 個字段,那么其對應的 PO 就有 25 個屬性,但我們的頁面上只需要顯示 5 個字段,因此沒有必要把整個 PO 對象傳遞給客戶端,這時我們只需把僅有 5 個屬性的 DTO 把結果傳遞給客戶端即可,而且如果用這個對象來對應界面的顯示對象,那此時它的身份就轉為 VO。使用 DTO 的好處有兩個,一是能避免傳遞過多的無用數據,提高數據的傳輸速度;二是能隱藏后端的表結構。常見的用法是:將請求的數據或屬性組裝成一個 RequestDTO,再將響應的數據或屬性組裝成一個 ResponseDTO.

          第 6 個:POJO

          POJO(Plain Ordinary Java Object)簡單的 Java 對象,實際就是普通的 JavaBeans,是為了避免和 EJB(Enterprise JavaBean)混淆所創造的簡稱。POJO 實質上可以理解為簡單的實體類,其中有一些屬性及其getter和setter方法的類,沒有業務邏輯,也不允許有業務方法,也不能攜帶有connection之類的方法。POJO 是 JavaEE 世界里面最靈活的對象,在簡單系統中,如果從數據庫到頁面展示都是 POJO 的話,它可以是 DTO;如果從數據庫中到業務處理中都是 POJO 的話,它可以是 BO;如果從數據庫到整個頁面的展示的話,它也可以是 VO.


          擴展閱讀:

          在實際的項目中,我們還會遇到一個常見的對象,那就是 Entity 實體對象,它對應數據庫中的表,我們可以簡單的理解為一個表對應一個 Entity,同樣以交易訂單表 Order 為例,如果這個表有 25 個字段,那么這個 OrderEntity 對象里面也要含有 25 個對應的屬性。


          參考文獻:

          [1] JavaEE PO VO BO DTO POJO DAO 整理總結
          [2] 胡亂說一下我對于 BO VO PO DTO 的理解

        QQ群:WEB開發者官方群(515171538),驗證消息:10000
        微信群:加小編微信 849023636 邀請您加入,驗證消息:10000
        提示:更多精彩內容關注微信公眾號:全棧開發者中心(fsder-com)
        DTO | DAO
        網友評論(共0條評論) 正在載入評論......
        理智評論文明上網,拒絕惡意謾罵 發表評論 / 共0條評論
        登錄會員中心
        江苏快3投注技巧