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