一、PO :(persistant object ),持久對象
二、VO :(value object) ,值對象
PO只能用在數據層,VO用在商務邏輯層和表示層。各層操作屬於該層自己的數據對象,這樣就可以降低各層之間的耦合,便於以后系統的維護和擴展。
三、DAO :(Data Access Objects) ,數據訪問對象接口
DAO是Data Access Object數據訪問接口,數據訪問:顧名思義就是與數據庫打交道。夾在業務邏輯與數據庫資源中間。
J2EE開發人員使用數據訪問對象(DAO)設計模式把底層的數據訪問邏輯和高層的商務邏輯分開.實現DAO模式能夠更加專注於編寫數據訪問代碼。
DAO模式是標准的J2EE設計模式之一.開發人員使用這個模式把底層的數據訪問操作和上層的商務邏輯分開。一個典型的DAO實現有下列幾個組件:
1. 一個DAO工廠類;
2. 一個DAO接口;
3. 一個實現DAO接口的具體類;
4. 數據傳遞對象(有些時候叫做值對象)。
具體的DAO類包含了從特定的數據源訪問數據的邏輯。
四、BO :(Business Object),業務對象層
表示應用程序領域內“事物”的所有實體類。這些實體類駐留在服務器上,並利用服務類來協助完成它們的職責。
五、POJO :(Plain Old Java Objects),簡單的Java對象
實際就是普通JavaBeans,使用POJO名稱是為了避免和EJB混淆起來, 而且簡稱比較直接。
其中有一些屬性及其getter、setter方法的類,有時可以作為value object或dto(Data Transform Object)來使用.當然,如果你有一個簡單的運算屬性也是可以的,但不允許有業務方法,也不能攜帶有connection之類的方法。
- VO(View Object):視圖對象,用於展示層,它的作用是把某個指定頁面(或組件)的所有數據封裝起來。
- DTO(Data Transfer Object):數據傳輸對象,這個概念來源於J2EE的設計模式,原來的目的是為了EJB的分布式應用提供粗粒度的數據實體,以減少分布式調用的次數,從而提高分布式調用的性能和降低網絡負載,但在這里,我泛指用於展示層與服務層之間的數據傳輸對象。
- DO(Domain Object):領域對象,就是從現實世界中抽象出來的有形或無形的業務實體。
- PO(Persistent Object):持久化對象,它跟持久層(通常是關系型數據庫)的數據結構形成一一對應的映射關系,如果持久層是關系型數據庫,那么,數據表中的每個字段(或若干個)就對應PO的一個(或若干個)屬性。
用戶發出請求(可能是填寫表單),表單的數據在展示層被匹配為VO。
展示層把VO轉換為服務層對應方法所要求的DTO,傳送給服務層。
服務層首先根據DTO的數據構造(或重建)一個DO,調用DO的業務方法完成具體業務。
服務層把DO轉換為持久層對應的PO(可以使用ORM工具,也可以不用),調用持久層的持久化方法,把PO傳遞給它,完成持久化操作。
VO: value object, view object
PO: persistent object
QO: query object
DAO: data access object-there is also DAO mode
DTO: data transfer object-there is also DTO mode
DAL (Data Access Layer)
IDAL (Interface Layer)
DALFactory (Class Factory)
BLL (Business Logic Layer)
BOF Business Object Framework
SOA Service Orient Architecture Service Oriented Design
EMF Eclipse Model Framework Eclipse Modeling frame

一、簡單Java對象
1️⃣PO persistent object
持久對象。與數據庫里表字段一一對應。PO是一些屬性,以及set和get方法組成。一般情況下,一個表對應一個PO,直接與操作數據庫的crud相關。
2️⃣VO view object
/value object
表現層對象。通常用於業務層之間的數據傳遞,和PO一樣也是僅僅包含數據而已。但應是抽象出的業務對象,可以和表對應,也可以不。這根據業務的需要而定。對於頁面上要展示的對象,可以封裝一個VO對象,將所需數據封裝進去。
3️⃣DTO data trasfer object
數據傳輸對象。主要用於遠程調用等需要大量傳輸對象的地方。
比如一張表有 100 個字段,那么對應的 PO 就有 100 個屬性。 但是界面上只要顯示 10 個字段, 客戶端用 WEB service 來獲取數據,沒有必要把整個 PO 對象傳遞到客戶端,
這時就可以用只有這 10 個屬性的 DTO 來傳遞結果到客戶端,這樣也不會暴露服務端表結構 . 到達客戶端以后,如果用這個對象來對應界面顯示,那此時它的身份就轉為 VO。
4️⃣POJO plain ordinary java object
/pure old java object
簡單無規則 java 對象,純的傳統意義的 java 對象。
二、復雜Java對象
1️⃣BO/DO bussiness object
/Domain Object
業務對象、域對象。封裝業務邏輯的 Java 對象,通過調用 DAO 方法,結合 PO,VO 進行業務操作。一個BO對象可以包括多個PO對象。如常見的工作簡歷例子為例,簡歷可以理解為一個BO,簡歷又包括工作經歷,學習經歷等,這些可以理解為一個個的PO,由多個PO組成BO。
2️⃣DAO data access object
數據訪問對象。此對象用於訪問數據庫。通常和 PO 結合使用,DAO 中包含了各種數據庫的操作方法。通過它的方法,結合 PO 對數據庫進行相關的操作。夾在業務邏輯與數據庫資源中間。