POJO全稱Plain Ordinary Java Object,表示簡單的Java對象,是DO/DTO/BO/VO的統(tǒng)稱。一個POJO持久化后就會成為PO,若用來傳遞則傳遞過程中是DTO,若用來對應(yīng)表現(xiàn)層則是VO。
| POJO | 全稱 | 說明 |
|---|---|---|
| DO | Domain Object | 領(lǐng)域?qū)ο?/td> |
| DTO | Data Transfer Object | 數(shù)據(jù)傳輸對象 |
| BO | Bussiness Object | 業(yè)務(wù)對象 |
| VO | View Object | 表現(xiàn)層對象,對應(yīng)視圖層用于展示層。 |
- DO領(lǐng)域?qū)ο螅菑默F(xiàn)實世界中抽象出來的有形或無形的業(yè)務(wù)實體,簡單來說是對現(xiàn)實世界中各種業(yè)務(wù)角色的抽象。
- DTO數(shù)據(jù)傳輸對象,概念源于J2EE的設(shè)計模式,目的是為EJB的分布式應(yīng)用提供粗粒度的數(shù)據(jù)實體,以減少分布式調(diào)用次數(shù),從而提高分布式調(diào)用性能,以降低網(wǎng)絡(luò)負(fù)載。DTO主要用于遠(yuǎn)程調(diào)用、不同層之間(通常是View展示層和Service服務(wù)層之間)等需要大量傳輸對象的位置。DTO遵守JavaBean規(guī)范,擁有Getter/Setter方法,類似VO。
- BO業(yè)務(wù)對象,作用是把業(yè)務(wù)邏輯封裝為一個對象,可以包括一個或多個對象,通常封裝了對DAO、RPC等的調(diào)用,可進行PO與VO/DTO之間的裝換。BO位于業(yè)務(wù)層(區(qū)別于直接對外提供服務(wù)的服務(wù)層),BO提供了基本業(yè)務(wù)單元的基礎(chǔ)業(yè)務(wù)操作,在設(shè)計上屬于被業(yè)務(wù)流程調(diào)用的對象(一個業(yè)務(wù)流程可能需要調(diào)用多個BO來完成)。
- VO表現(xiàn)層對象,用于表示一個與前端進行交互的Java對象。VO的作用是將頁面或組件的數(shù)據(jù)進行封裝,使用一個VO對象表示一整個頁面所需展示的值,其他不需要的數(shù)據(jù)不應(yīng)該放入到VO對象中,以減少數(shù)據(jù)傳輸量。VO遵守JavaBean規(guī)范擁有Getter/Setter方法。
BO相關(guān)的概念:只包含業(yè)務(wù)對象的屬性、只包含業(yè)務(wù)的方法、兩者都包含
| 業(yè)務(wù)邏輯 | 是否負(fù)責(zé) |
|---|---|
| 系統(tǒng)領(lǐng)域業(yè)務(wù)的處理 | 負(fù)責(zé) |
| 邏輯性數(shù)據(jù)的生成、處理與轉(zhuǎn)換 | 負(fù)責(zé) |
| 對所輸入的邏輯性數(shù)據(jù)的正確性及有效性 | 負(fù)責(zé) |
| 對輸出的邏輯性數(shù)據(jù)以及用戶性數(shù)據(jù)正確性 | 不負(fù)責(zé) |
| 對數(shù)據(jù)的呈現(xiàn)樣式 | 不負(fù)責(zé) |
相關(guān)概念
| 模型命名 | 全稱 | 說明 |
|---|---|---|
| PO | Persistent Object | 持久化對象 |
| DAO | Data Access Object | 數(shù)據(jù)訪問對象 |
| VO | Value Object | 值對象 |
- PO持久化對象,跟持久層(關(guān)系型數(shù)據(jù)庫)的數(shù)據(jù)結(jié)構(gòu)形成一一對應(yīng)的映射關(guān)系,僅用于表示數(shù)據(jù)。一個PO對象相當(dāng)于數(shù)據(jù)庫中的一條記錄,每個字段對應(yīng)PO對象的一個屬性。因此,PO可視為是與數(shù)據(jù)庫表相映射的Java對象。PO遵守JavaBean規(guī)范,除了Setter/Getter之外沒有任何操作。
- VO值對象,用于業(yè)務(wù)層之間數(shù)據(jù)傳遞,和PO一樣僅包含數(shù)據(jù),應(yīng)是抽象出的業(yè)務(wù)對象,可以和表對應(yīng)也可以不對應(yīng)。
- DAO數(shù)據(jù)訪問層對象,使用DAO訪問數(shù)據(jù)庫包括增刪改查等操作。DAO與PO一起使用,DAO在持久層完全封裝數(shù)據(jù)庫操作,對外暴露的方法。上層應(yīng)用不需要關(guān)注數(shù)據(jù)庫相關(guān)的任何信息。
持久化是將程序數(shù)據(jù)在持久狀態(tài)和瞬時狀態(tài)之間轉(zhuǎn)換的機制,簡單來將是將瞬時數(shù)據(jù)(比如內(nèi)存中的數(shù)據(jù),它是不能永久保存的)持久化為持久數(shù)據(jù)(比如持久化至數(shù)據(jù)庫就能夠長久保存)。
對象轉(zhuǎn)換

對象轉(zhuǎn)換