VO ,PO ,BO,QO, DAO ,POJO,概念
VO
,
PO
,
BO
,
QO,
DAO ,POJO,
O/R Mapping
是
Object Relational
Mapping
(對象關(guān)系映射)的縮寫。通俗點(diǎn)講,就是將對象與關(guān)系數(shù)據(jù)庫綁定,用對象來表示關(guān)系數(shù)據(jù)。在
O/R
Mapping
的世界里,有兩個(gè)基本的也是重要的東東需要了解,即
VO
,
PO
。
VO
,值對象
(Value Object)
,
PO
,持久對象
(Persisent
Object)
,它們是由一組屬性和屬性的
get
和
set
方法組成。從結(jié)構(gòu)上看,它們并沒有什么不同的地方。但從其意義和本質(zhì)上來看是完全不同的。
1.
VO
是用
new
關(guān)鍵字創(chuàng)建,由
GC
回收的。
PO
則是向數(shù)據(jù)庫中添加新數(shù)據(jù)時(shí)創(chuàng)建,刪除數(shù)據(jù)庫中數(shù)據(jù)時(shí)削除的。并且它只能存活在一個(gè)數(shù)據(jù)庫連接中,斷開連接即被銷毀。
2.
VO
是值對象,精確點(diǎn)講它是業(yè)務(wù)對象,是存活在業(yè)務(wù)層的,是業(yè)務(wù)邏輯使用的,它存活的目的就是為數(shù)據(jù)提供一個(gè)生存的地方。
PO
則是有狀態(tài)的,每個(gè)屬性代表其當(dāng)前的狀態(tài)。它是物理數(shù)據(jù)的對象表示。使用它,可以使我們的程序與物理數(shù)據(jù)解耦,并且可以簡化對象數(shù)據(jù)與物理數(shù)據(jù)之間的轉(zhuǎn)換。
3.
VO
的屬性是根據(jù)當(dāng)前業(yè)務(wù)的不同而不同的,也就是說,它的每一個(gè)屬性都一一對應(yīng)當(dāng)前業(yè)務(wù)邏輯所需要的數(shù)據(jù)的名稱。
PO
的屬性是跟數(shù)據(jù)庫表的字段一一對應(yīng)的。
PO
對象需要實(shí)現(xiàn)序列化接口。
-------------------------------------------------
java
的
(PO,VO,TO,BO,DAO,POJO)
解釋
PO(persistant object)
持久對象
在
o/r
映射的時(shí)候出現(xiàn)的概念,如果沒有
o/r
映射,沒有這個(gè)概念存在了。通常對應(yīng)數(shù)據(jù)模型
(
數(shù)據(jù)庫
),
本身還有部分業(yè)務(wù)邏輯的處理??梢钥闯墒桥c數(shù)據(jù)庫中的表相映射的
java
對象。最簡單的
PO
就是對應(yīng)數(shù)據(jù)庫中某個(gè)表中的一條記錄,多個(gè)記錄可以用
PO
的集合。
PO
中應(yīng)該不包含任何對數(shù)據(jù)庫的操作。
VO(value object)
值對象
通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞,和
PO
一樣也是僅僅包含數(shù)據(jù)而已。但應(yīng)是抽象出的業(yè)務(wù)對象
,
可以和表對應(yīng)
,
也可以不
,
這根據(jù)業(yè)務(wù)的需要
.
個(gè)人覺得同
DTO(
數(shù)據(jù)傳輸對象
),
在
web
上傳遞。
TO(Transfer Object)
,數(shù)據(jù)傳輸對象
在應(yīng)用程序不同
tie(
關(guān)系
)
之間傳輸?shù)膶ο?/span>
BO(business object)
業(yè)務(wù)對象
從業(yè)務(wù)模型的角度看
,
見
UML
元件領(lǐng)域模型中的領(lǐng)域?qū)ο?。封裝業(yè)務(wù)邏輯的
java
對象
,
通過調(diào)用
DAO
方法
,
結(jié)合
PO,VO
進(jìn)行業(yè)務(wù)操作。
business object:
業(yè)務(wù)對象
主要作用是把業(yè)務(wù)邏輯封裝為一個(gè)對象。這個(gè)對象可以包括一個(gè)或多個(gè)其它的對象。
比如一個(gè)簡歷,有教育經(jīng)歷、工作經(jīng)歷、社會(huì)關(guān)系等等。
我們可以把教育經(jīng)歷對應(yīng)一個(gè)
PO
,工作經(jīng)歷對應(yīng)一個(gè)
PO
,社會(huì)關(guān)系對應(yīng)一個(gè)
PO
。
建立一個(gè)對應(yīng)簡歷的
BO
對象處理簡歷,每個(gè)
BO
包含這些
PO
。
這樣處理業(yè)務(wù)邏輯時(shí),我們就可以針對
BO
去處理。
QO
:查詢對象
POJO(plain ordinary java object)
簡單無規(guī)則
java
對象
純的傳統(tǒng)意義的
java
對象。就是說在一些
Object/Relation
Mapping
工具中,能夠做到維護(hù)數(shù)據(jù)庫表記錄的
persisent
object
完全是一個(gè)符合
Java Bean
規(guī)范的純
Java
對象,沒有增加別的屬性和方法。我的理解就是最基本的
Java Bean
,只有屬性字段及
setter
和
getter
方法!。
DAO(data access object)
數(shù)據(jù)訪問對象
是一個(gè)
sun
的一個(gè)標(biāo)準(zhǔn)
j2ee
設(shè)計(jì)模式,
這個(gè)模式中有個(gè)接口就是
DAO
,它負(fù)持久層的操作。為業(yè)務(wù)層提供接口。此對象用于訪問數(shù)據(jù)庫。通常和
PO
結(jié)合使用,
DAO
中包含了各種數(shù)據(jù)庫的操作方法。通過它的方法
,
結(jié)合
PO
對數(shù)據(jù)庫進(jìn)行相關(guān)的操作。夾在業(yè)務(wù)邏輯與數(shù)據(jù)庫資源中間。配合
VO,
提供數(shù)據(jù)庫的
CRUD
操作
...
DTO
:
Data Transfer Object
數(shù)據(jù)傳輸對象
主要用于遠(yuǎn)程調(diào)用等需要大量傳輸對象的地方。
比如我們一張表有
100
個(gè)字段,那么對應(yīng)的
PO
就有
100
個(gè)屬性。
但是我們界面上只要顯示
10
個(gè)字段,
客戶端用
WEB service
來獲取數(shù)據(jù),沒有必要把整個(gè)
PO
對象傳遞到客戶端,
這時(shí)我們就可以用只有這
10
個(gè)屬性的
DTO
來傳遞結(jié)果到客戶端,這樣也不會(huì)暴露服務(wù)端表結(jié)構(gòu)
.
到達(dá)客戶端以后,如果用這個(gè)對象來對應(yīng)界面顯示,那此時(shí)它的身份就轉(zhuǎn)為
VO
DAO
:數(shù)據(jù)訪問對象
——
同時(shí)還有
DAO
模式
DTO
:數(shù)據(jù)傳輸對象
——
同時(shí)還有
DTO
模式
O/R Mapper 對象 / 關(guān)系 映射
定義好所有的 mapping 之后,這個(gè) O/R
Mapper 可以幫我們做很多的工作。通過這些 mappings, 這個(gè) O/R
Mapper 可以生成所有的關(guān)于對象保存,刪除,讀取的 SQL 語句,我們不再需要寫那么多行的 DAL 代碼了。
實(shí)體 Model( 實(shí)體模式 )
DAL( 數(shù)據(jù)訪問層 )
IDAL( 接口層 )
DALFactory( 類工廠 )
BLL( 業(yè)務(wù)邏輯層 )
BOF???? Business Object Framework?????? 業(yè)務(wù)對象框架
SOA???? Service Orient Architecture???? 面向服務(wù)的設(shè)計(jì)
EMF???? Eclipse Model Framework???????
Eclipse 建模框架
posted on 2009-03-28 16:07 luofeng225 閱讀(14020) 評(píng)論(1) 編輯 收藏 所屬分類: 未分類