隨筆-3  評(píng)論-2  文章-1  trackbacks-0
                   POJO(plain old java Object)[譯:簡(jiǎn)單初始Java對(duì)象]。它簡(jiǎn)單(因?yàn)橹挥衧et/get方法)嗎?或是我們把應(yīng)該把它弄得復(fù)雜點(diǎn)(帶點(diǎn)業(yè)務(wù)判斷)?究竟它在我們J2EE應(yīng)用中扮演一個(gè)什么樣的角色呢?一個(gè)Anemic Domain Model,Rich Domain Model, DTO, O/R mapping Entity........!以前我的系統(tǒng)中POJO都是一個(gè)貧血的模型,只有set/get方法!它的職責(zé)就是把前端頁(yè)面的數(shù)據(jù)從formBean中轉(zhuǎn)移過(guò)來(lái)(用反射),作為持久層的對(duì)象。這里POJO有兩個(gè)角色,一個(gè)角色是傳送數(shù)據(jù),另一個(gè)是角色是PO(持久對(duì)象)。一段時(shí)間后我發(fā)現(xiàn)這樣做效率低下,想像一下有些業(yè)務(wù)處理,如一個(gè)銀行帳戶的pojo,里面有一個(gè)金額和利息字段,這個(gè)金額是通過(guò)一些公式計(jì)算后得出來(lái)的,開(kāi)始時(shí)我們?cè)跇I(yè)務(wù)層里把金額算出來(lái)后set到帳戶pojo金額字段里。我開(kāi)始思索把一些都是計(jì)算或者純邏輯的東西pull Up到pojo中。這時(shí)候我的pojo變成一個(gè)Domain Object。盡管不是一個(gè)Rich的Domain Model,但畢竟前進(jìn)了一小步。再后來(lái)用到了webwork2,由于webwork2里沒(méi)有了struts formBean,使用攔截機(jī)設(shè)值,ModelDriven模式下我的持久Entity就是一個(gè)formBean和po的結(jié)合, 在ACTIO中它是一個(gè)有值的VO,在DAO實(shí)現(xiàn)層變成一個(gè)PO。在這里我的pojo繼承了O/R Entity類,并把合適的業(yè)務(wù)層的代碼都移到相應(yīng)的了Pojo中,當(dāng)然沒(méi)有持久層的代碼。這樣我的系統(tǒng)的部分pojo變成了Rich Domain Model。在Ejb下,由會(huì)話門面管理對(duì)POJO業(yè)務(wù)對(duì)象訪問(wèn)對(duì)比起笨重的entity bean有更高的效率和可移植性。盡管Ejb下的POJO不能享受entity bean的CMP策略,但有了spring 的IOC后,一切變得可配置了!POJO還有很重要的一個(gè)優(yōu)勢(shì)就是pojo中的業(yè)務(wù)可以脫離具體容器運(yùn)行測(cè)試!在這里,pojo是貧血還是沖血應(yīng)該取決于你的業(yè)務(wù)應(yīng)用,記住:不要把簡(jiǎn)單的問(wèn)題搞復(fù)雜了,但把復(fù)雜的問(wèn)題分解成簡(jiǎn)單的問(wèn)題一直就是我們追求的!
          posted on 2005-11-24 16:46 java驛館 閱讀(614) 評(píng)論(1)  編輯  收藏 所屬分類: J2EE隨談

          評(píng)論:
          # re: J2EE中POJO的定位 2008-06-25 09:18 | luren
          了解~~~  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 大方县| 东兴市| 吴旗县| 镶黄旗| 建德市| 年辖:市辖区| 库尔勒市| 松阳县| 沅江市| 安康市| 古交市| 射阳县| 上栗县| 屏南县| 华宁县| 凤山县| 宜州市| 岳西县| 三江| 会宁县| 南宫市| 林周县| 诏安县| 临清市| 宝清县| 曲水县| 如东县| 山阳县| 潜山县| 祥云县| 平谷区| 子洲县| 遂昌县| 长岛县| 腾冲县| 甘洛县| 伊宁市| 静海县| 明光市| 灯塔市| 开封市|