PO/VO/BO/DTO/POJO/DAO

一、基本介紹前端

       PO(persistant object) 持久對象:在o/r 映射的時候出現的概念,一般對應數據模型(數據庫),自己還有部分業務邏輯的處理.能夠當作是與數據庫中的表相映射的java對象.最簡單的PO就是對應數據庫中某個表中的一條記錄,多個記錄能夠用PO的集合.PO中應該不包含任何對數據庫的操做.
       VO(value object) 值對象:一般用於業務層之間的數據傳遞,和PO同樣也是僅僅包含數據而已.但應是抽象出的業務對象,能夠和表對應,也能夠不,這根據業務的須要.
       BO(business object) 業務對象:從業務模型的角度看,封裝業務邏輯的java對象,經過調用DAO方法,結合PO,VO進行業務操做.
       DTO (Data Transfer Object)數據傳輸對象:主要用於遠程調用等須要大量傳輸對象的地方。
好比咱們一張表有100個字段,那麼對應的PO就有100個屬性。可是咱們界面上只要顯示10個字段,客戶端用WEB service來獲取數據,沒有必要把整個PO對象傳遞到客戶端,
這時咱們就能夠用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端之後,若是用這個對象來對應界面顯示,那此時它的身份就轉爲VO
       POJO(plain ordinary java object) 簡單無規則java對象,最基本的Java Bean,只有屬性字段及setter和getter方法!.
      DAO(data access object) 數據訪問對象,是sun的一個標準j2ee設計模式,這個模式中有個接口就是DAO,它負責持久層的操做.爲業務層提供接口.此對象用於訪問數據庫.一般和PO結合使用,DAO中包含了各類數據庫的操做方法.經過它的方法,結合PO對數據庫進行相關的操做.夾在業務邏輯與數據庫資源中間.配合VO, 提供數據庫的CRUD操做。java

二、輔助理解數據庫

      PO DTO VO BO 都是POJO,是個簡單的java對象;DAO 的話就是進行數據庫增刪改查的類。
      下面重點說下這幾個,他們都是POJO
      PO 持久對象,數據;
      BO 業務對象,封裝對象、複雜對象 ,裏面可能包含多個類;
      DTO 傳輸對象,前端調用時傳輸 ;
      VO 表現對象,前端界面展現。後端

      當你業務足夠簡單時,一個POJO 也徹底當作PO BO DTO VO 看,下面是例子:
      好比有個用戶類 只有 name 以及 phone
      對於數據庫層面也就兩列,業務層面,傳輸,和前臺展現時 都只有這兩項。設計模式

      而後說下他們區別開來的例子:
      (1)仍是用戶類 name phone 加了個password。
      那麼你後端的PO屬性也是這3個,通常數據庫裏這個表有幾個字段你的PO就有多少屬性,可是傳輸到前臺或者展示時,咱們不該該把password 密碼這種東西也一塊兒傳過去,因此他們的DTO VO 就仍是 name + phone
      po : name phone password
      dto : name phone
      vo : name phone設計

     (2)如今又加了一個 枚舉的狀態位 status 表示用戶的一些特殊狀態,前臺不會直接顯示,可能會根據這個狀態產生後續的操做,
      po : name phone password status
      dto : name phone status
      vo : name phone對象

     (3)接着看下BO ,一個用戶下面 確定會關聯不少其餘的表
      好比用戶設置 用戶信息等,那麼這個BO 下 不但有用戶自己的一些屬性,還包含了用戶設置 和用戶信息這兩個類。接口

本站公眾號
   歡迎關注本站公眾號,獲取更多信息