领域模型命名规约【PO,VO,POJO,BO,DTO,DO,JavaBean】
PO,VO,POJO,BO,DTO,DO,JavaBean
在這之前我先說一下,在阿里巴巴開發手冊中有提到這種領域模型命名規約,即如下圖:
下面是更加詳細的介紹:
po
PO(Persistant Object)可以看成是與數據庫中的表相映射的java對象。最簡單的PO就是對應數據庫中某個表中的一條記錄,多個記錄可以用PO的集合。PO中應該不包含任何對數據庫的操作。
好處就是可以把一條記錄作為一個對象處理,可以方便的轉為其他對象。
vo
VO值對象,通常用于業務層之間的數據傳遞,與PO一樣僅包含數據,根據業務的需要與抽象出的業務對象實現對應或者非對應。
VO主要對應界面顯示的數據對象。對于一個WEB頁面,或者SWT/SWING的一個界面,用一個VO對象對應整個界面的值。
pojo
POJO(Plain Ordinary Java Object簡單無規則java對象)是純粹的傳統意義的java對象。就是說在一些Object/Relation Mapping工具中,能夠做到維護數據庫表記錄的persisent object完全是一個符合Java Bean規范的純Java對象,沒有增加別的屬性和方法,即,最基本的Java Bean,只有屬性字段及setter和getter方法!
- 一個POJO持久化以后就是PO;
- 直接用它傳遞,傳遞過程中就是DTO;
- 直接用來對應表示層就是VO。
bo
BO(Business Object)業務對象,封裝業務邏輯的java對象,通過調用DAO方法,結合PO,VO進行業務操作。這個對象可以包括一個或多個其它的對象。
比如一個簡歷,有教育經歷、工作經歷、 關系等等。我們可以把教育經歷對應一個PO,工作經歷對應一個PO, 關系對應一個PO。建立一個對應簡歷的BO對象處理簡歷,每個BO包含這些PO。這樣處理業務邏輯時,我們就可以針對BO去處理。
關于BO主要有三種概念 :
- 只包含業務對象的屬性;
- 只包含業務方法;
- 兩者都包含。
在實際使用中,認為哪一種概念正確并不重要,關鍵是實際應用中適合自己項目的需要
dto
DTO(Data Transfer Object,數據傳輸對象)主要用于遠程調用等需要大量傳輸對象的地方。
比如說,我們一張表有100個字段,那么對應的PO就有100個屬性。但是我們界面上只要顯示10個字段, 客戶端用WEB service來獲取數據,沒有必要把整個PO對象傳遞到客戶端, 這時我們就可以用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端以后,如果用這個對象來對應界面顯示,那此時它的身份就轉為VO。
DTO 是一組需要跨進程或網絡邊界傳輸的聚合數據的簡單容器。它不應該包含業務邏輯,并將其行為限制為諸如內部一致性檢查和基本驗證之類的活動。注意,不要因實 現這些方法而導致 DTO 依賴于任何新類。在設計數據傳輸對象時,您有兩種主要選擇:使用一般集合;或使用顯式的 getter 和 setter 方法創建自定義對象
do
DO( Data Object):與數據庫表結構一一對應,通過DAO層向上傳輸數據源對象。
JavaBean
JavaBean 是一種JAVA語言寫成的可重用組件。為寫成JavaBean,類必須是具體的和公共的,并且具有無參數的構造器。JavaBean 通過提供符合一致性設計模式的公共方法將內部域暴露成員屬性,set和get方法獲取。眾所周知,屬性名稱符合這種模式,其他Java 類可以通過自省機制(反射機制)發現和操作這些JavaBean 的屬性。
總結
以上是生活随笔為你收集整理的领域模型命名规约【PO,VO,POJO,BO,DTO,DO,JavaBean】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装了git以后,idea类名颜色的含义
- 下一篇: 大剑无锋之Zookeeper面试题