前情提要
正文詳解
VO
O/R Mapper
PO
VO與PO區別
BO
POJO
DAO(常用)
DTO(較少用,過渡作用)
TO
QO
DO
前情提要
核心概念
實體類在不同應用層面的表述
個人建議
因為我學習本文的知識是源於對后台的進一步理解,所以如果你結合SpringMVC的話,理解可能感覺更好一點~
個人理解(因為對后台理解有限,不完善處以后規整)
service:BO
dao:DAO、DTO、PO、QO
正文詳解
VO
基本理解
value object:值對象
view object:表現層對象
簡要理解(部分人認為同DTO有部分相同作用)
通常用於業務層之間的數據傳遞,主要對應界面顯示的數據對象,他的對應對象可以是一個WEB頁面,或者SWT、SWING的一個界面,通常用一個VO對象對應整個界面的值;
O/R Mapper
基本理解
Object Relational Mapping:對象/關系 映射*
作用
定義好所有的mapping之后,這個O/R Mapper可以幫我們做很多的工作;通過這些mappings,這個O/R Mapper可以生成所有的關於對象保存,刪除,讀取的SQL語句,我們不再需要寫那么多行的DAL代碼了
建議了解
在O/R Mapping的世界里,有兩個基本的也是重要的對象需要了解,即VO,PO
PO
基本理解
persistant object :持久對象
注意
PO中應該不包含任何對數據庫的操作!
簡介
在o/r映射的時候出現的概念,如果沒有o/r映射,就沒有這個概念存在了。可以看成是與數據庫中的表相映射的java對象,一般包含數據模型(數據庫),部分業務邏輯;最簡單的PO就是對應數據庫中某個表中的一條記錄,多個記錄可以用PO的集合;
簡要理解
PO對應數據庫表,且數據庫表會映射一個PO(java對象),一個PO就是數據庫中的一條記錄,我們這可以把這條記錄作為一個對象處理,可以方便的轉為其它對象;
VO與PO區別
VO是用new關鍵字創建,由GC回收的
PO則是向數據庫中添加新數據時創建,刪除數據庫中數據時削除的。並且它只能存活在一個數據庫連接中,斷開連接即被銷毀
VO是值對象,精確點講它是業務對象,是存活在業務層的,是業務邏輯使用的,它存活的目的就是為數據提供一個生存的地方
PO則是有狀態的,每個屬性代表其當前的狀態。它是物理數據的對象表示。使用它,可以使程序與物理數據解耦,並且可以簡化對象數據與物理數據之間的轉換
VO的屬性是根據當前業務的不同而不同的,也就是說,它的每一個屬性都一一對應當前業務邏輯所需要的數據的名稱
PO的屬性是跟數據庫表的字段一一對應的
PO對象需要實現序列化接口
BO
基本理解
business object:業務對象
簡要理解
封裝業務邏輯的java對象,通過調用DAO方法,結合PO,VO進行業務操作 ;
栗子理解(BO統籌PO)
主要作用是把業務邏輯封裝為一個對象。這個對象可以包括一個或多個其它的對象。
比如一個簡歷,有教育經歷、工作經歷、社會關系等等。
我們可以把教育經歷對應一個PO,工作經歷對應一個PO,社會關系對應一個PO。
建立一個對應簡歷的BO對象處理簡歷,每個BO包含這些PO。
這樣處理業務邏輯時,我們就可以針對BO去處理。
POJO
基本理解
plain ordinary java object:簡單無規則java對象
簡介
單純的傳統意義的java對象。就是說在一些Object/Relation Mapping工具中,能夠做到維護數據庫表記錄的persisent object完全是一個符合Java Bean規范的純Java對象,沒有增加別的屬性和方法。我的理解就是最基本的Java Bean,只有屬性字段及setter和getter方法
簡要理解
POJO首先區別於其他對象,同時是最常見最多變的一個中間常用對象
不同場景下POJO的代表
1.一個POJO持久化以后就是PO
2.直接用它傳遞、傳遞過程中就是DTO
3.直接用來對應表示層就是VO
DAO(常用)
基本理解
data access object:數據訪問對象
簡介
一個標准j2ee設計模式,夾在業務邏輯與數據庫資源中間,通過DAO接口訪問數據庫,DAO中包含了各種數據庫的操作方法(CRUD操作),通過它的方法,結合PO對數據庫進行相關的操作,基本沒有互相轉化的可能性和必要;同時可以通過它把POJO持久化為PO,用PO組裝出來VO、DTO ~
簡要理解
通常和PO結合使用,DAO中包含了各種數據庫的操作方法;通過它的方法 , 結合PO對數據庫進行相關的操作;配合VO,提供數據庫的CRUD(增刪改查)操作
DTO(較少用,過渡作用)
基本理解
Data Transfer Object:數據傳輸對象
簡要理解
主要用於遠程調用需要大量傳輸對象的地方
栗子理解
比如我們一張表有100個字段,那么對應的PO就有100個屬性.
但是我們界面上只要顯示10個字段,
客戶端用WEB service來獲取數據,沒有必要把整個PO對象傳遞到客戶端,
這時我們就可以用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端以后,如果用這個對象來對應界面顯示,那此時它的身份就轉為VO
TO
基本理解
Transfer Object:數據傳輸對象
簡要理解
在應用程序不同tie(關系)之間傳輸的對象
QO
基本理解
Query Object:查詢對象
簡要理解
存儲一些與持久性查詢操作的語句對象
DO
基本理解
Domain Object:領域對象
簡要理解
就是從現實世界中抽象出來的有形或無形的業務實體