看到網(wǎng)上這篇整理的比較好。先收錄下來。感謝偉大的英特耐特。哈哈哈
PO:持久對象 (persistent object),po(persistent object)就是在Object/Relation Mapping框架中的Entity,po的每個屬性基本上都對應(yīng)數(shù)據(jù)庫表里面的某個字段。完全是一個符合Java Bean規(guī)范的純Java對象,沒有增加別的屬性和方法。持久對象是由insert數(shù)據(jù)庫創(chuàng)建,由數(shù)據(jù)庫delete刪除的。基本上持久對象生命周期和數(shù)據(jù)庫密切相關(guān)。
VO:值對象(Value Object),通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞,和PO一樣也是僅僅包含數(shù)據(jù)而已。但應(yīng)是抽象出的業(yè)務(wù)對象,可以和表對應(yīng),也可以不,這根據(jù)業(yè)務(wù)的需要。
表現(xiàn)層對象(View Object),主要對應(yīng)展示界面顯示的數(shù)據(jù)對象,用一個VO對象來封裝整個界面展示所需要的對象數(shù)據(jù)。
BO:業(yè)務(wù)對象層的縮寫(Business Object),封裝業(yè)務(wù)邏輯的java對象,通過調(diào)用DAO方法,結(jié)合PO,VO進(jìn)行業(yè)務(wù)操作。具體可以看網(wǎng)上的一個例子:
比如一個簡歷,有教育經(jīng)歷、工作經(jīng)歷、社會關(guān)系等等。
我們可以把教育經(jīng)歷對應(yīng)一個PO,工作經(jīng)歷對應(yīng)一個PO,社會關(guān)系對應(yīng)一個PO。
建立一個對應(yīng)簡歷的BO對象處理簡歷,每個BO包含這些PO。
這樣處理業(yè)務(wù)邏輯時,我們就可以針對BO去處理。
DTO:數(shù)據(jù)傳輸對象(Data Transfer Object),是一種設(shè)計模式之間傳輸數(shù)據(jù)的軟件應(yīng)用系統(tǒng)。數(shù)據(jù)傳輸目標(biāo)往往是數(shù)據(jù)訪問對象從數(shù)據(jù)庫中檢索數(shù)據(jù)。數(shù)據(jù)傳輸對象與數(shù)據(jù)交互對象或數(shù)據(jù)訪問對象之間的差異是一個以不具有任何行為除了存儲和檢索的數(shù)據(jù)(訪問和存取器)。簡單來說,當(dāng)我們需要一個對象10個字段的內(nèi)容,但這個對象總共有20個字段,我們不需要把整個PO對象全部字段傳輸?shù)娇蛻舳?,而是可以用DTO重新封裝,傳遞到客戶端。此時,如果這個對象用來對應(yīng)界面的展現(xiàn),就叫VO。
JavaBean:一種可重用組件,即“一次性編寫,任何地方執(zhí)行,任何地方重用”。滿足三個條件①類必須是具體的和公共的②具有無參構(gòu)造器③提供一致性設(shè)計模式的公共方法將內(nèi)部域暴露成員屬性。
主要用途:可以用在 功能、處理、值、數(shù)據(jù)庫訪問和JSP中任何可以用Java代碼創(chuàng)造的對象。
有兩種:一種是有用戶界面(UI,User Interface)的JavaBean;還有一種是沒有用戶界面,主要負(fù)責(zé)處理事務(wù)(如數(shù)據(jù)運(yùn)算,操縱數(shù)據(jù)庫)的JavaBean。JSP通常訪問的是后一種JavaBean。
分類:通常有Session bean,Entity bean,MessageDrivenBean三大類
——Session bean會話構(gòu)件,是短暫的對象,運(yùn)行在服務(wù)器上,并執(zhí)行一些應(yīng)用邏輯處理,它由客戶端應(yīng)用程序建立,其數(shù)據(jù)需要自己來管理。分為無狀態(tài)和有狀態(tài)兩種。
——Entity bean實體構(gòu)件,是持久對象,可以被其他對象調(diào)用。在建立時指定一個唯一標(biāo)示的標(biāo)識,并允許客戶程序,根據(jù)實體bean標(biāo)識來定位beans實例。多個實體可以并發(fā)訪問實體bean,事務(wù)間的協(xié)調(diào)由容器來完成。
——MessageDriven
Bean消息構(gòu)件,是專門用來處理JMS(Java Message
System)消息的規(guī)范(EIB2.0)。JMS是一種與廠商無關(guān)的API,用來訪問消息收發(fā)系統(tǒng),并提供了與廠商無關(guān)的訪問方法,以此來訪問消息收發(fā)服務(wù)。JMS客戶機(jī)可以用來發(fā)送消息而不必等待回應(yīng)。
JavaBeans:JavaBeans從狹義來說,指的是 JavaBeans 規(guī)范也就是位于 java.beans 包中的一組 API。從廣義上來說,JavaBeans 指的是 API 集合,比如 Enterprise JavaBeans。
POJO:POJO(Plain Ordinary Java Object)簡單的Java對象,實際就是普通JavaBeans,是為了避免和EJB混淆所創(chuàng)造的簡稱。通指沒有使用Entity Beans的普通java對象,可以把POJO作為支持業(yè)務(wù)邏輯的協(xié)助類。
POJO實質(zhì)上可以理解為簡單的實體類,顧名思義POJO類的作用是方便程序員使用數(shù)據(jù)庫中的數(shù)據(jù)表,對于廣大的程序員,可以很方便的將POJO類當(dāng)做對象來進(jìn)行使用,當(dāng)然也是可以方便的調(diào)用其get,set方法。POJO類也給我們在struts框架中的配置帶來了很大的方便。
一個POJO持久化以后就是PO
直接用它傳遞、傳遞過程中就是DTO
直接用來對應(yīng)表示層就是VO
DAO:數(shù)據(jù)訪問對象是第一個面向?qū)ο蟮臄?shù)據(jù)庫接口,是一個數(shù)據(jù)訪問接口(Data Access Object)。它可以把POJO持久化為PO,用PO組裝出來VO、DTO。
DAO模式是標(biāo)準(zhǔn)的J2EE設(shè)計模式之一.開發(fā)人員使用這個模式把底層的數(shù)據(jù)訪問操作和上層的商務(wù)邏輯分開.一個典型的DAO實現(xiàn)有下列幾個組件:
1. 一個DAO工廠類;
2. 一個DAO接口;
3. 一個實現(xiàn)DAO接口的具體類;
4. 數(shù)據(jù)傳遞對象(有些時候叫做值對象).
具體的DAO類包含了從特定的數(shù)據(jù)源訪問數(shù)據(jù)的邏輯,一般一個DAO類和一張表對應(yīng),每個操作要和事務(wù)關(guān)聯(lián)。