發(fā)文前聲明:下面內(nèi)容是本人日常學(xué)習(xí)做的筆記,一些內(nèi)容來源于互聯(lián)網(wǎng)。
POJO(pure old java object)
是普通java類,有一些private的參數(shù)作為對(duì)象的屬性,然后針對(duì)每一個(gè)參數(shù)定義get和set方法訪問的接口。
我看到這個(gè)定義,心里就有個(gè)疑問了,這個(gè)POJO跟JavaBean的定義怎么就這么像??jī)烧哂惺裁磪^(qū)別?
POJO其實(shí)是比javabean更純凈的簡(jiǎn)單類或接口。POJO嚴(yán)格地遵守簡(jiǎn)單對(duì)象的概念,而一些JavaBean中往往會(huì)封裝一些簡(jiǎn)單邏輯。
JavaBean是一種JAVA語(yǔ)言寫成的可重用組件。它的方法命名,構(gòu)造及行為必須符合特定的約定:
1.這個(gè)類必須有一個(gè)公共的缺省構(gòu)造函數(shù)。
2.這個(gè)類的屬性使用getter和setter來訪問,其他方法遵從標(biāo)準(zhǔn)命名規(guī)范。
3.這個(gè)類應(yīng)是可序列化的。
簡(jiǎn)而言之,當(dāng)一個(gè)POJO可序列化,有一個(gè)無參的構(gòu)造函數(shù),使用getter和setter方法來訪問屬性時(shí),它就是一個(gè)JavaBean。
可能有些人不明白什么是可序列化,可以看我另一篇博客http://my.oschina.net/pacoyang/blog/151649
DAO(data access objects)
DAO是數(shù)據(jù)訪問對(duì)象,DAO一般有接口和該接口的實(shí)現(xiàn)類,接口用于規(guī)范實(shí)現(xiàn)類。實(shí)現(xiàn)類一般用于操作數(shù)據(jù)庫(kù),如對(duì)數(shù)據(jù)庫(kù)進(jìn)行修改、添加、刪除等操作,一般直接調(diào)用公共類DAO。
什么是DTO(data transfer object)、什么是VO(value object)、什么是PO(persistent object)?
我們通過DAO將POJO持久化為PO,用PO組裝出來VO、DTO。
總結(jié)下,我認(rèn)為一個(gè)對(duì)象究竟是什么O要看具體環(huán)境,在不同的層、不同的應(yīng)用場(chǎng)合,對(duì)象的身份也不一樣,而且對(duì)象身份的轉(zhuǎn)化也是很自然的。就像你對(duì)老婆來說就是老公,對(duì)父母來說就是子女。設(shè)計(jì)這些概念的初衷不是為了唬人而是為了更好的理解和處理各種邏輯,讓大家能更好的去用面向?qū)ο蟮姆绞教幚韱栴}。
比如:我們一張表有100個(gè)字段,那么對(duì)應(yīng)的PO就有100個(gè)屬性。但是我們界面上只要顯示10個(gè)字段,客戶端用WEBservice來獲取數(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。
什么是BO(business object)?
BO: POJO在業(yè)務(wù)層的體現(xiàn),對(duì)于業(yè)務(wù)操作來說,更多的是從業(yè)務(wù)上來包裝對(duì)象,如一個(gè)User的BO,可能包括name, age, sex, privilege, group等,這些屬性在數(shù)據(jù)庫(kù)中可能會(huì)在多張表中,因?yàn)槊恳粡埍韺?duì)應(yīng)一個(gè)PO,而我們的BO需要這些PO組合起來(或說重新拼裝)才能成為業(yè)務(wù)上的一個(gè)完整對(duì)象。
EJB
EJB(Enterprise JavaBean): 我認(rèn)為它是一組"功能"JavaBean的集合。上面說了JavaBean是實(shí)現(xiàn)了一種規(guī)范的Java對(duì)象。這里說EJB是一組JavaBean,的意思是這一組JavaBean組合起來實(shí)現(xiàn)了某個(gè)企業(yè)組的業(yè)務(wù)邏輯。這里的一組JavaBean不是亂組合的,它們要滿足能實(shí)現(xiàn)某項(xiàng)業(yè)務(wù)功能的搭配。找個(gè)比方,對(duì)于一身穿著來說,包括一頂帽子,一件衣服,一條褲子,兩只鞋。這穿著就是EJB,其它的就是一個(gè)JavaBean
SSH與EJB區(qū)別
EJB是一種javabean的組合規(guī)范,SSH是3個(gè)框架jar包的組合。
EJB本身是JavaEE的規(guī)范由容器廠商負(fù)責(zé)實(shí)現(xiàn),也就是使用EJB,需要使用JavaEE服務(wù)器。而用SSH,直接用Web服務(wù)器, SSH中要解決的目標(biāo)和EJB是一致的。EJB是大型的,SSH是輕量級(jí)的。
聯(lián)系客服