溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java中PO、VO、BO、POJO、DAO、DTO、TO、QO、Bean、conn的示例分析

發(fā)布時(shí)間:2021-08-30 11:01:10 來源:億速云 閱讀:161 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“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)序列化接口。

java 的 (PO,VO,TO,BO,DAO,POJO) 解釋

PO(persistant object) 持久對(duì)象

在 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ù)庫的操作。

VO(value object) 值對(duì)象

通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞,和 PO 一樣也是僅僅包含數(shù)據(jù)而已。但應(yīng)是抽象出的業(yè)務(wù)對(duì)象 , 可以和表對(duì)應(yīng) , 也可以不 , 這根據(jù)業(yè)務(wù)的需要 . 個(gè)人覺得同 DTO( 數(shù)據(jù)傳輸對(duì)象 ), 在 web 上傳遞。

TO(Transfer Object) ,數(shù)據(jù)傳輸對(duì)象

在應(yīng)用程序不同 tie( 關(guān)系 ) 之間傳輸?shù)膶?duì)象

BO(business object) 業(yè)務(wù)對(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 去處理。

QO :查詢對(duì)象

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 方法!。

DAO(data access object) 數(shù)據(jù)訪問對(duì)象

是一個(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 操作 ...

DTO :

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

DAO :數(shù)據(jù)訪問對(duì)象 —— 同時(shí)還有 DAO 模式

DTO :數(shù)據(jù)傳輸對(duì)象 —— 同時(shí)還有 DTO 模式

O/R Mapper 對(duì)象 / 關(guān)系 映射

定義好所有的 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 建模框架

下面是個(gè)人理解

VO基本理解

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è)界面的值;

O/R Mapper基本理解

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

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與PO區(qū)別

  • 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)序列化接口

BO基本理解

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去處理。

POJO基本理解

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

DAO(常用)基本理解

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(增刪改查)操作

DTO(較少用,過渡作用)基本理解

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

TO基本理解

Transfer Object:數(shù)據(jù)傳輸對(duì)象

簡(jiǎn)要理解

在應(yīng)用程序不同tie(關(guān)系)之間傳輸?shù)膶?duì)象

QO基本理解

Query Object:查詢對(duì)象

簡(jiǎn)要理解

存儲(chǔ)一些與持久性查詢操作的語句對(duì)象

DO基本理解

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è)資訊頻道!

向AI問一下細(xì)節(jié)

免責(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)容。

AI