新的起點(diǎn) 新的開(kāi)始

          快樂(lè)生活 !

          JavaBean之間拷貝利器-Dozer 如果現(xiàn)在還是原始的手動(dòng)拷貝或者使用BeanUtil 趕緊換吧

             分析多層架構(gòu)的JEE系統(tǒng),經(jīng)常存在JavaBean直接的拷貝。比如在DAO層,我們通過(guò)POJO取得業(yè)務(wù)層需要的數(shù)據(jù),將這些數(shù)據(jù)傳遞給Service層的VO。POJO與VO就存在典型的值拷貝。還有就是Webservice,客戶端調(diào)用Webservice,也存在將大量返回值映射到相應(yīng)的JavaBean里。呵呵 我們項(xiàng)目就是這個(gè)需求。
              典型的解決方案就是手動(dòng)拷貝,弊端很明顯,代碼中充斥大量Set Get方法,真正的業(yè)務(wù)沒(méi)埋藏與值的拷貝之中。另一種方案就是使用BeanUtil,但BeanUtil不夠很好的靈活性,又時(shí)候還不得不手動(dòng)拷貝。
               對(duì)于這種重復(fù)沒(méi)有實(shí)際意義的拷貝難道沒(méi)有終結(jié)解決方案嗎?! Dozer 一把JavaBean利器。(http://dozer.sourceforge.net/)

              什么是Dozer?
              看看官方的定義:
           Dozer is a Java Bean to Java Bean mapper that recursively copies data from one object to 
          another. Typically, these Java Beans will be of different complex types.

          Dozer supports simple property mapping, complextype mapping, bi
          -directional mapping, implicitexplicit mapping, as well as recursive
          mapping.This includes mapping collection attributes that also need mapping at the element level.
              注意:Dozer支持簡(jiǎn)單類型 復(fù)雜類型的雙向遞歸映射。
              
              如何使用呢? 類似BeanUtil 很簡(jiǎn)單,如果兩個(gè)javaBean之間,屬性名相同,類型為基本類型,那么下面代碼就OK了,基本沒(méi)有學(xué)習(xí)曲線。
             

          Mapper mapper = new DozerBeanMapper();

          DestinationObject destObject 
          = mapper.map(sourceObject, DestinationObject.class);
                       or
          DestinationObject destObject 
          = new DestinationObject();
          mapper.map(sourceObject, destObject);
             在后續(xù)的的內(nèi)容中,我會(huì)介紹如何配置復(fù)雜的Map,如何自定義Map,如何獲得Map的統(tǒng)計(jì)數(shù)據(jù)等。JavaBean之間拷貝利器-Dozer(2)  映射數(shù)據(jù)類型不一致,級(jí)聯(lián)映射與自定義映射

            

          posted on 2009-04-12 22:11 advincenting 閱讀(3169) 評(píng)論(10)  編輯  收藏

          評(píng)論

          # re: JavaBean之間拷貝利器-Dozer 如果現(xiàn)在還是原始的手動(dòng)拷貝或者使用BeanUtil 趕緊換吧 2009-04-12 23:11 CoderDream

          不錯(cuò),有空研究一下!  回復(fù)  更多評(píng)論   

          # re: JavaBean之間拷貝利器-Dozer 如果現(xiàn)在還是原始的手動(dòng)拷貝或者使用BeanUtil 趕緊換吧[未登錄](méi) 2009-04-13 08:35 abc

          好東西,我以前也為這個(gè)犯愁呢!  回復(fù)  更多評(píng)論   

          # re: JavaBean之間拷貝利器-Dozer 如果現(xiàn)在還是原始的手動(dòng)拷貝或者使用BeanUtil 趕緊換吧 2009-04-13 10:05 rmn190

          如果sourceObject和DestinationObject里屬性名不同或大多屬性性相同而只有幾個(gè)不同,Dozer能不能支持針對(duì)這樣的問(wèn)題的問(wèn)題?  回復(fù)  更多評(píng)論   

          # re: JavaBean之間拷貝利器-Dozer 如果現(xiàn)在還是原始的手動(dòng)拷貝或者使用BeanUtil 趕緊換吧 2009-04-13 11:02 cnodin

          我有點(diǎn)奇怪,實(shí)體用一個(gè)不就好了嗎?為啥用POJO,又要用VO呢?  回復(fù)  更多評(píng)論   

          # re: JavaBean之間拷貝利器-Dozer 如果現(xiàn)在還是原始的手動(dòng)拷貝或者使用BeanUtil 趕緊換吧[未登錄](méi) 2009-04-13 13:35 rex

          dozer效率比較慢的  回復(fù)  更多評(píng)論   

          # re: JavaBean之間拷貝利器-Dozer 如果現(xiàn)在還是原始的手動(dòng)拷貝或者使用BeanUtil 趕緊換吧 2009-04-13 13:51 隔葉黃鶯

          好的,收藏一下  回復(fù)  更多評(píng)論   

          # re: JavaBean之間拷貝利器-Dozer 如果現(xiàn)在還是原始的手動(dòng)拷貝或者使用BeanUtil 趕緊換吧 2009-04-13 22:19

          BeanUtil這個(gè)東西不適合用在Proxy出來(lái)的對(duì)象
          Dozer可以

          這個(gè)開(kāi)源組件很靈活,如果屬性名相同,基本不需要配置,
          如果兩個(gè)類的屬性名不同,可能就需要一些配置。

          總體來(lái)說(shuō),很不錯(cuò)的
          性能上也慢不到哪里去。  回復(fù)  更多評(píng)論   

          # re: JavaBean之間拷貝利器-Dozer 如果現(xiàn)在還是原始的手動(dòng)拷貝或者使用BeanUtil 趕緊換吧 2009-04-13 22:21

          我有點(diǎn)奇怪,實(shí)體用一個(gè)不就好了嗎?為啥用POJO,又要用VO呢?

          我還覺(jué)得你有點(diǎn)奇怪,呵呵。  回復(fù)  更多評(píng)論   

          # re: JavaBean之間拷貝利器-Dozer 如果現(xiàn)在還是原始的手動(dòng)拷貝或者使用BeanUtil 趕緊換吧 2009-04-13 22:37 advincenting

          為啥使用POJO,VO 呵呵,JEE架構(gòu)是多層的啊,如何屏蔽高層對(duì)底層的依賴呢,當(dāng)然通過(guò)值傳遞了。用過(guò)Spring Hiberante Ibatis 的朋友就應(yīng)該明白吧。  回復(fù)  更多評(píng)論   

          # re: JavaBean之間拷貝利器-Dozer 如果現(xiàn)在還是原始的手動(dòng)拷貝或者使用BeanUtil 趕緊換吧 2009-04-14 19:07 wangbing

          好東西 用上了  回復(fù)  更多評(píng)論   


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


          網(wǎng)站導(dǎo)航:
           

          公告

          Locations of visitors to this pageBlogJava
        1. 首頁(yè)
        2. 新隨筆
        3. 聯(lián)系
        4. 聚合
        5. 管理
        6. <2009年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          統(tǒng)計(jì)

          常用鏈接

          留言簿(13)

          隨筆分類(71)

          隨筆檔案(179)

          文章檔案(13)

          新聞分類

          IT人的英語(yǔ)學(xué)習(xí)網(wǎng)站

          JAVA站點(diǎn)

          優(yōu)秀個(gè)人博客鏈接

          官網(wǎng)學(xué)習(xí)站點(diǎn)

          生活工作站點(diǎn)

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 沭阳县| 武乡县| 钦州市| 文成县| 鹤峰县| 恭城| 荃湾区| 周至县| 东城区| 吐鲁番市| 新安县| 孝义市| 阳山县| 江西省| 怀远县| 甘孜县| 义乌市| 扶绥县| 农安县| 株洲县| 宜兰市| 桐城市| 峨眉山市| 金华市| 湖南省| 昭平县| 平利县| 大同县| 土默特右旗| 建水县| 静宁县| 牡丹江市| 徐汇区| 洮南市| 房山区| 吉木萨尔县| 江达县| 南乐县| 漠河县| 井陉县| 茂名市|