java领域对象_java的几种对象(po,dto,dao等)
j2ee中,經(jīng)常提到幾種對(duì)象(object),理解他們的含義有助于我們更好的理解面向?qū)ο蟮脑O(shè)計(jì)思維。
POJO(plain old java object):普通的java對(duì)象,有別于特殊的java對(duì)象(含繼承約束等)和EJB。POJO一般只有一系列的屬性和相應(yīng)的get、set方法。
PO(persistant object):持久化對(duì)象,有別于POJO,必須對(duì)應(yīng)數(shù)據(jù)庫(kù)中的實(shí)體。一個(gè)PO對(duì)應(yīng)數(shù)據(jù)庫(kù)的一條記錄。持久化對(duì)象的生命周期與數(shù)據(jù)庫(kù)密切相關(guān),只能存在于connection之中,連接關(guān)閉后,PO就消失了。
PO相對(duì)于POJO有諸多不同,比如PO中會(huì)有保存數(shù)據(jù)庫(kù)entity狀態(tài)的屬性和方法。但是ORM(object-relation mapping)追求的目標(biāo)是PO和POJO的一致,所以在程序員的日常開發(fā)中,都是將POJO作為PO使用,而將POJO轉(zhuǎn)化為PO的功能交給hibernate等框架來實(shí)現(xiàn)。
DTO(data transfer object):數(shù)據(jù)傳輸對(duì)象,以前被稱為值對(duì)象(VO,value object),作用僅在于在應(yīng)用程序的各個(gè)子系統(tǒng)間傳輸數(shù)據(jù),在表現(xiàn)層展示。與POJO對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)實(shí)體不同,DTO并不對(duì)應(yīng)一個(gè)實(shí)體,可能僅存儲(chǔ)實(shí)體的部分屬性或加入符合傳輸需求的其他的屬性。
DAO(data access object):數(shù)據(jù)訪問對(duì)象。提供訪問數(shù)據(jù)庫(kù)的抽象接口,或者持久化機(jī)制,而不暴露數(shù)據(jù)庫(kù)的內(nèi)部詳細(xì)信息。DAO提供從程序調(diào)用到持久層的匹配。
BO(business object):業(yè)務(wù)對(duì)象。主要是將業(yè)務(wù)邏輯封裝為一個(gè)對(duì)象,該對(duì)象可以包含一個(gè)或多個(gè)其他對(duì)象。如,"Principal"(委托人),有"Name","Age"等屬性,同時(shí)和"Employee"(雇員)有1對(duì)多的關(guān)系,這個(gè)"Principal"就可以作為一個(gè)與業(yè)務(wù)相關(guān)的PO。
PO(persistant object) 持久對(duì)象
在 o/r 映射的時(shí)候出現(xiàn)的概念,如果沒有 o/r 映射,沒有這個(gè)概念存在了。通常對(duì)應(yīng)數(shù)據(jù)模型 ( 數(shù)據(jù)庫(kù) ), 本身還有部分業(yè)務(wù)邏輯的處理??梢钥闯墒桥c數(shù)據(jù)庫(kù)中的表相映射的 java 對(duì)象。最簡(jiǎn)單的 PO 就是對(duì)應(yīng)數(shù)據(jù)庫(kù)中某個(gè)表中的一條記錄,多個(gè)記錄可以用 PO 的集合。 PO 中應(yīng)該不包含任何對(duì)數(shù)據(jù)庫(kù)的操作。
DO(Domain Object)領(lǐng)域?qū)ο?/p>
就是從現(xiàn)實(shí)世界中抽象出來的有形或無形的業(yè)務(wù)實(shí)體。一般和數(shù)據(jù)中的表結(jié)構(gòu)對(duì)應(yīng)。
TO(Transfer Object) ,數(shù)據(jù)傳輸對(duì)象
在應(yīng)用程序不同 tie( 關(guān)系 ) 之間傳輸?shù)膶?duì)象
DTO(Data Transfer Object)數(shù)據(jù)傳輸對(duì)象
這個(gè)概念來源于J2EE的設(shè)計(jì)模式,原來的目的是為了EJB的分布式應(yīng)用提供粗粒度的數(shù)據(jù)實(shí)體,以減少分布式調(diào)用的次數(shù),從而提高分布式調(diào)用的性能和降低網(wǎng)絡(luò)負(fù)載,但在這里,我泛指用于展示層與服務(wù)層之間的數(shù)據(jù)傳輸對(duì)象。
VO(view object) 值對(duì)象
視圖對(duì)象,用于展示層,它的作用是把某個(gè)指定頁(yè)面(或組件)的所有數(shù)據(jù)封裝起來。
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 去處理。
POJO(plain ordinary java object) 簡(jiǎn)單無規(guī)則 java 對(duì)象
純的傳統(tǒng)意義的 java 對(duì)象。就是說在一些 Object/Relation Mapping 工具中,能夠做到維護(hù)數(shù)據(jù)庫(kù)表記錄的 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ù)庫(kù)。通常和 PO 結(jié)合使用, DAO 中包含了各種數(shù)據(jù)庫(kù)的操作方法。通過它的方法 , 結(jié)合 PO 對(duì)數(shù)據(jù)庫(kù)進(jìn)行相關(guān)的操作。夾在業(yè)務(wù)邏輯與數(shù)據(jù)庫(kù)資源中間。配合 VO, 提供數(shù)據(jù)庫(kù)的 CRUD 操作
https://www.zhihu.com/question/39651928
總結(jié)
以上是生活随笔為你收集整理的java领域对象_java的几种对象(po,dto,dao等)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java字符生成器_Java实现简单字符
- 下一篇: java上传网络图片_java网络编程之