在JAVA開發過程當中常常接觸到的幾類對象,有:PO,BO,DTO,VO等。java
持久化對象,它跟持久層(一般是關係型數據庫)的數據結構造成一一對應的映射關係,若是持久層是關係型數據庫,那麼,數據表中的每一個字段(或若干個)就對應 PO 的一個(或若干個)屬性。能夠當作是與數據庫中的表相映射的 java 對象。一個 PO 就是對應數據庫中某個表中的一條記錄,含有多個記錄時能夠用 PO 的集合來表示。 PO 中應該只含有屬性與對屬性的基礎操做 setter/getter 方法。數據庫
主要做用是把業務關聯邏輯封裝爲一個總體對象,這個對象能夠包括一個或多個其它的對象。 經過化零爲整來反應各對象之間的業務關聯關係,好比:一個訂單 BO,同時包含有商品信息、賣家信息、買家信息等等。 咱們能夠把持久層中的多個商品信息對應一個 PO 集合,賣家信息對應一個 PO ,買家信息對應一個 PO 。 創建一個對應訂單的 BO 對象用於處理訂單流程,每一個 BO 包含這些 PO 信息 。 這樣處理業務邏輯時,咱們就能夠針對 BO 總體去處理。網絡
指用於視圖層與服務層之間的數據傳輸對象。原來的設計目的是爲了EJB的分佈式應用提供粗粒度的數據實體,以減小分佈式服務間調用的次數,從而提升分佈式調用的性能和下降網絡負載。但如今多用於指視圖層與服務層之間的數據傳遞。數據結構
視圖對象,用於視圖層,它的用來封裝特定視圖層中頁面(或組件)所需的數據進行統一封裝。分佈式
除了以上常見對象外,還可能會接觸一些其餘類型的對象:性能
從現實世界中抽象出來的有形或無形的業務實體,其與 PO 常見區別體如今前者更關注業務抽象,後者更注重持久化需求,致使其並不老是可以一一對應。例如:在學生與老師的業務抽象時對應 studentDO 和 teacherDO 兩個對象,而在關係型數據庫中因爲其二者間多對多的關聯關係,除了有對應的 studentPO 和 teacherPO 還會對應一個記錄其二者間關聯關係的 studentAndTeacherPO 存在,此時則不含有與之對應的 BO 存在。除此之外,還有可能存在將某些一一對應的業務實體(如:客戶和聯繫信息)合併爲一個 PO,此時則存在兩個 BO 對應一個 PO 的狀況。設計
不一樣服務之間進行數據傳輸的對象。對象
傳統意義的 JAVA 對象,只含有屬性與其對應的 setter/getter 方法。PO,BO,DTO 等均可以看作側重不一樣角度和不一樣狀態的 POJO。開發