您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的示例分析”這篇文章吧。
O/R Mapping 是 Object Relational
Mapping (對(duì)象關(guān)系映射)的縮寫。通俗點(diǎn)講,就是將對(duì)象與關(guān)系數(shù)據(jù)庫綁定,用對(duì)象來表示關(guān)系數(shù)據(jù)。在 O/R
Mapping 的世界里,有兩個(gè)基本的也是重要的東東需要了解,即 VO , PO 。
VO ,值對(duì)象 (Value Object) ,
PO ,持久對(duì)象 (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 是值對(duì)象,精確點(diǎn)講它是業(yè)務(wù)對(duì)象,是存活在業(yè)務(wù)層的,是業(yè)務(wù)邏輯使用的,它存活的目的就是為數(shù)據(jù)提供一個(gè)生存的地方。
PO 則是有狀態(tài)的,每個(gè)屬性代表其當(dāng)前的狀態(tài)。它是物理數(shù)據(jù)的對(duì)象表示。使用它,可以使我們的程序與物理數(shù)據(jù)解耦,并且可以簡(jiǎn)化對(duì)象數(shù)據(jù)與物理數(shù)據(jù)之間的轉(zhuǎn)換。
3. VO 的屬性是根據(jù)當(dāng)前業(yè)務(wù)的不同而不同的,也就是說,它的每一個(gè)屬性都一一對(duì)應(yīng)當(dāng)前業(yè)務(wù)邏輯所需要的數(shù)據(jù)的名稱。
PO 的屬性是跟數(shù)據(jù)庫表的字段一一對(duì)應(yīng)的。
PO 對(duì)象需要實(shí)現(xiàn)序列化接口。
在 o/r 映射的時(shí)候出現(xiàn)的概念,如果沒有 o/r 映射,沒有這個(gè)概念存在了。通常對(duì)應(yīng)數(shù)據(jù)模型 ( 數(shù)據(jù)庫 ), 本身還有部分業(yè)務(wù)邏輯的處理。可以看成是與數(shù)據(jù)庫中的表相映射的 java 對(duì)象。最簡(jiǎn)單的 PO 就是對(duì)應(yīng)數(shù)據(jù)庫中某個(gè)表中的一條記錄,多個(gè)記錄可以用 PO 的集合。 PO 中應(yīng)該不包含任何對(duì)數(shù)據(jù)庫的操作。
通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞,和 PO 一樣也是僅僅包含數(shù)據(jù)而已。但應(yīng)是抽象出的業(yè)務(wù)對(duì)象 , 可以和表對(duì)應(yīng) , 也可以不 , 這根據(jù)業(yè)務(wù)的需要 . 個(gè)人覺得同 DTO( 數(shù)據(jù)傳輸對(duì)象 ), 在 web 上傳遞。
在應(yīng)用程序不同 tie( 關(guān)系 ) 之間傳輸?shù)膶?duì)象
從業(yè)務(wù)模型的角度看 , 見 UML 元件領(lǐng)域模型中的領(lǐng)域?qū)ο?。封裝業(yè)務(wù)邏輯的 java 對(duì)象 , 通過調(diào)用 DAO 方法 , 結(jié)合 PO,VO 進(jìn)行業(yè)務(wù)操作。
business object: 業(yè)務(wù)對(duì)象
主要作用是把業(yè)務(wù)邏輯封裝為一個(gè)對(duì)象。這個(gè)對(duì)象可以包括一個(gè)或多個(gè)其它的對(duì)象。
比如一個(gè)簡(jiǎn)歷,有教育經(jīng)歷、工作經(jīng)歷、社會(huì)關(guān)系等等。
我們可以把教育經(jīng)歷對(duì)應(yīng)一個(gè) PO ,工作經(jīng)歷對(duì)應(yīng)一個(gè) PO ,社會(huì)關(guān)系對(duì)應(yīng)一個(gè) PO 。
建立一個(gè)對(duì)應(yīng)簡(jiǎn)歷的 BO 對(duì)象處理簡(jiǎn)歷,每個(gè) BO 包含這些 PO 。
這樣處理業(yè)務(wù)邏輯時(shí),我們就可以針對(duì) BO 去處理。
POJO(plain ordinary java object) 簡(jiǎn)單無規(guī)則 java 對(duì)象
純的傳統(tǒng)意義的 java 對(duì)象。就是說在一些 Object/Relation
Mapping 工具中,能夠做到維護(hù)數(shù)據(jù)庫表記錄的 persisent
object 完全是一個(gè)符合 Java Bean 規(guī)范的純 Java 對(duì)象,沒有增加別的屬性和方法。我的理解就是最基本的 Java Bean ,只有屬性字段及 setter 和 getter 方法!。
是一個(gè) sun 的一個(gè)標(biāo)準(zhǔn) j2ee 設(shè)計(jì)模式, 這個(gè)模式中有個(gè)接口就是 DAO ,它負(fù)持久層的操作。為業(yè)務(wù)層提供接口。此對(duì)象用于訪問數(shù)據(jù)庫。通常和 PO 結(jié)合使用, DAO 中包含了各種數(shù)據(jù)庫的操作方法。通過它的方法 , 結(jié)合 PO 對(duì)數(shù)據(jù)庫進(jìn)行相關(guān)的操作。夾在業(yè)務(wù)邏輯與數(shù)據(jù)庫資源中間。配合 VO,
提供數(shù)據(jù)庫的 CRUD 操作 ...
Data Transfer Object 數(shù)據(jù)傳輸對(duì)象
主要用于遠(yuǎn)程調(diào)用等需要大量傳輸對(duì)象的地方。
比如我們一張表有 100 個(gè)字段,那么對(duì)應(yīng)的 PO 就有 100 個(gè)屬性。
但是我們界面上只要顯示 10 個(gè)字段,
客戶端用 WEB service 來獲取數(shù)據(jù),沒有必要把整個(gè) PO 對(duì)象傳遞到客戶端,
這時(shí)我們就可以用只有這 10 個(gè)屬性的 DTO 來傳遞結(jié)果到客戶端,這樣也不會(huì)暴露服務(wù)端表結(jié)構(gòu) . 到達(dá)客戶端以后,如果用這個(gè)對(duì)象來對(duì)應(yīng)界面顯示,那此時(shí)它的身份就轉(zhuǎn)為 VO
定義好所有的 mapping 之后,這個(gè) O/R
Mapper 可以幫我們做很多的工作。通過這些 mappings, 這個(gè) O/R
Mapper 可以生成所有的關(guān)于對(duì)象保存,刪除,讀取的 SQL 語句,我們不再需要寫那么多行的 DAL 代碼了。
實(shí)體 Model( 實(shí)體模式 )
DAL( 數(shù)據(jù)訪問層 )
IDAL( 接口層 )
DALFactory( 類工廠 )
BLL( 業(yè)務(wù)邏輯層 )
BOF Business Object Framework 業(yè)務(wù)對(duì)象框架
SOA Service Orient Architecture 面向服務(wù)的設(shè)計(jì)
EMF Eclipse Model Framework
Eclipse 建模框架
value object:值對(duì)象
view object:表現(xiàn)層對(duì)象
簡(jiǎn)要理解(部分人認(rèn)為同DTO有部分相同作用)
通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞,主要對(duì)應(yīng)界面顯示的數(shù)據(jù)對(duì)象,他的對(duì)應(yīng)對(duì)象可以是一個(gè)WEB頁面,或者SWT、SWING的一個(gè)界面,通常用一個(gè)VO對(duì)象對(duì)應(yīng)整個(gè)界面的值;
Object Relational Mapping:對(duì)象/關(guān)系 映射*
作用
定義好所有的mapping之后,這個(gè)O/R Mapper可以幫我們做很多的工作;通過這些mappings,這個(gè)O/R Mapper可以生成所有的關(guān)于對(duì)象保存,刪除,讀取的SQL語句,我們不再需要寫那么多行的DAL代碼了
建議了解
在O/R Mapping的世界里,有兩個(gè)基本的也是重要的對(duì)象需要了解,即VO,PO
persistant object :持久對(duì)象
注意
PO中應(yīng)該不包含任何對(duì)數(shù)據(jù)庫的操作!
簡(jiǎn)介
在o/r映射的時(shí)候出現(xiàn)的概念,如果沒有o/r映射,就沒有這個(gè)概念存在了??梢钥闯墒桥c數(shù)據(jù)庫中的表相映射的java對(duì)象,一般包含數(shù)據(jù)模型(數(shù)據(jù)庫),部分業(yè)務(wù)邏輯;最簡(jiǎn)單的PO就是對(duì)應(yīng)數(shù)據(jù)庫中某個(gè)表中的一條記錄,多個(gè)記錄可以用PO的集合;
簡(jiǎn)要理解
PO對(duì)應(yīng)數(shù)據(jù)庫表,且數(shù)據(jù)庫表會(huì)映射一個(gè)PO(java對(duì)象),一個(gè)PO就是數(shù)據(jù)庫中的一條記錄,我們這可以把這條記錄作為一個(gè)對(duì)象處理,可以方便的轉(zhuǎn)為其它對(duì)象;
VO是用new關(guān)鍵字創(chuàng)建,由GC回收的
PO則是向數(shù)據(jù)庫中添加新數(shù)據(jù)時(shí)創(chuàng)建,刪除數(shù)據(jù)庫中數(shù)據(jù)時(shí)削除的。并且它只能存活在一個(gè)數(shù)據(jù)庫連接中,斷開連接即被銷毀
VO是值對(duì)象,精確點(diǎn)講它是業(yè)務(wù)對(duì)象,是存活在業(yè)務(wù)層的,是業(yè)務(wù)邏輯使用的,它存活的目的就是為數(shù)據(jù)提供一個(gè)生存的地方
PO則是有狀態(tài)的,每個(gè)屬性代表其當(dāng)前的狀態(tài)。它是物理數(shù)據(jù)的對(duì)象表示。使用它,可以使程序與物理數(shù)據(jù)解耦,并且可以簡(jiǎn)化對(duì)象數(shù)據(jù)與物理數(shù)據(jù)之間的轉(zhuǎn)換
VO的屬性是根據(jù)當(dāng)前業(yè)務(wù)的不同而不同的,也就是說,它的每一個(gè)屬性都一一對(duì)應(yīng)當(dāng)前業(yè)務(wù)邏輯所需要的數(shù)據(jù)的名稱
PO的屬性是跟數(shù)據(jù)庫表的字段一一對(duì)應(yīng)的
PO對(duì)象需要實(shí)現(xiàn)序列化接口
business object:業(yè)務(wù)對(duì)象
簡(jiǎn)要理解
封裝業(yè)務(wù)邏輯的java對(duì)象,通過調(diào)用DAO方法,結(jié)合PO,VO進(jìn)行業(yè)務(wù)操作 ;
理解(BO統(tǒng)籌PO)
主要作用是把業(yè)務(wù)邏輯封裝為一個(gè)對(duì)象。這個(gè)對(duì)象可以包括一個(gè)或多個(gè)其它的對(duì)象。
比如一個(gè)簡(jiǎn)歷,有教育經(jīng)歷、工作經(jīng)歷、社會(huì)關(guān)系等等。
我們可以把教育經(jīng)歷對(duì)應(yīng)一個(gè)PO,工作經(jīng)歷對(duì)應(yīng)一個(gè)PO,社會(huì)關(guān)系對(duì)應(yīng)一個(gè)PO。
建立一個(gè)對(duì)應(yīng)簡(jiǎn)歷的BO對(duì)象處理簡(jiǎn)歷,每個(gè)BO包含這些PO。
這樣處理業(yè)務(wù)邏輯時(shí),我們就可以針對(duì)BO去處理。
plain ordinary java object:簡(jiǎn)單無規(guī)則java對(duì)象
簡(jiǎn)介
單純的傳統(tǒng)意義的java對(duì)象。就是說在一些Object/Relation Mapping工具中,能夠做到維護(hù)數(shù)據(jù)庫表記錄的persisent object完全是一個(gè)符合Java Bean規(guī)范的純Java對(duì)象,沒有增加別的屬性和方法。我的理解就是最基本的Java Bean,只有屬性字段及setter和getter方法
簡(jiǎn)要理解
POJO首先區(qū)別于其他對(duì)象,同時(shí)是最常見最多變的一個(gè)中間常用對(duì)象
不同場(chǎng)景下POJO的代表
一個(gè)POJO持久化以后就是PO
直接用它傳遞、傳遞過程中就是DTO
直接用來對(duì)應(yīng)表示層就是VO
data access object:數(shù)據(jù)訪問對(duì)象
簡(jiǎn)介
一個(gè)標(biāo)準(zhǔn)j2ee設(shè)計(jì)模式,夾在業(yè)務(wù)邏輯與數(shù)據(jù)庫資源中間,通過DAO接口訪問數(shù)據(jù)庫,DAO中包含了各種數(shù)據(jù)庫的操作方法(CRUD操作),通過它的方法,結(jié)合PO對(duì)數(shù)據(jù)庫進(jìn)行相關(guān)的操作,基本沒有互相轉(zhuǎn)化的可能性和必要;同時(shí)可以通過它把POJO持久化為PO,用PO組裝出來VO、DTO ~
簡(jiǎn)要理解
通常和PO結(jié)合使用,DAO中包含了各種數(shù)據(jù)庫的操作方法;通過它的方法 , 結(jié)合PO對(duì)數(shù)據(jù)庫進(jìn)行相關(guān)的操作;配合VO,提供數(shù)據(jù)庫的CRUD(增刪改查)操作
Data Transfer Object:數(shù)據(jù)傳輸對(duì)象
簡(jiǎn)要理解
主要用于遠(yuǎn)程調(diào)用需要大量傳輸對(duì)象的地方
列子理解
比如我們一張表有100個(gè)字段,那么對(duì)應(yīng)的PO就有100個(gè)屬性.
但是我們界面上只要顯示10個(gè)字段,
客戶端用WEB service來獲取數(shù)據(jù),沒有必要把整個(gè)PO對(duì)象傳遞到客戶端,
這時(shí)我們就可以用只有這10個(gè)屬性的DTO來傳遞結(jié)果到客戶端,這樣也不會(huì)暴露服務(wù)端表結(jié)構(gòu).到達(dá)客戶端以后,如果用這個(gè)對(duì)象來對(duì)應(yīng)界面顯示,那此時(shí)它的身份就轉(zhuǎn)為VO
Transfer Object:數(shù)據(jù)傳輸對(duì)象
簡(jiǎn)要理解
在應(yīng)用程序不同tie(關(guān)系)之間傳輸?shù)膶?duì)象
Query Object:查詢對(duì)象
簡(jiǎn)要理解
存儲(chǔ)一些與持久性查詢操作的語句對(duì)象
Domain Object:領(lǐng)域?qū)ο?/p>
簡(jiǎn)要理解
就是從現(xiàn)實(shí)世界中抽象出來的有形或無形的業(yè)務(wù)實(shí)體
最后再介紹下Bean,Conn
Bean包就是專門放置屬性類的,比如在數(shù)據(jù)庫中創(chuàng)建了一個(gè)表,那么你可以把這個(gè)表的各個(gè)字段,分別定義成屬性放置在一個(gè)類里,并寫明setter和getter方法,然后把這個(gè)類放置在bean包下面。
Conn建立了一個(gè)數(shù)據(jù)庫連接對(duì)象,其他所有涉及到數(shù)據(jù)庫操作的文件都需要包含這個(gè)文件并引用該對(duì)象。
以上是“java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。