VO ,PO ,BO,QO, DAO ,POJO,概念

          VO , PO BO , QO, DAO ,POJO,

          ?

          O/R Mapping Object Relational
          Mapping
          (對象關(guān)系映射)的縮寫。通俗點(diǎn)講,就是將對象與關(guān)系數(shù)據(jù)庫綁定,用對象來表示關(guān)系數(shù)據(jù)。在 O/R
          Mapping
          的世界里,有兩個(gè)基本的也是重要的東東需要了解,即 VO PO 。

          VO ,值對象 (Value Object)

          PO ,持久對象 (Persisent
          Object)
          ,它們是由一組屬性和屬性的 get set 方法組成。從結(jié)構(gòu)上看,它們并沒有什么不同的地方。但從其意義和本質(zhì)上來看是完全不同的。

          1. VO 是用 new 關(guān)鍵字創(chuàng)建,由 GC 回收的。
             PO 則是向數(shù)據(jù)庫中添加新數(shù)據(jù)時(shí)創(chuàng)建,刪除數(shù)據(jù)庫中數(shù)據(jù)時(shí)削除的。并且它只能存活在一個(gè)數(shù)據(jù)庫連接中,斷開連接即被銷毀。


          2. VO 是值對象,精確點(diǎn)講它是業(yè)務(wù)對象,是存活在業(yè)務(wù)層的,是業(yè)務(wù)邏輯使用的,它存活的目的就是為數(shù)據(jù)提供一個(gè)生存的地方。

             PO 則是有狀態(tài)的,每個(gè)屬性代表其當(dāng)前的狀態(tài)。它是物理數(shù)據(jù)的對象表示。使用它,可以使我們的程序與物理數(shù)據(jù)解耦,并且可以簡化對象數(shù)據(jù)與物理數(shù)據(jù)之間的轉(zhuǎn)換。

          3. VO 的屬性是根據(jù)當(dāng)前業(yè)務(wù)的不同而不同的,也就是說,它的每一個(gè)屬性都一一對應(yīng)當(dāng)前業(yè)務(wù)邏輯所需要的數(shù)據(jù)的名稱。

          PO
          的屬性是跟數(shù)據(jù)庫表的字段一一對應(yīng)的。
          PO
          對象需要實(shí)現(xiàn)序列化接口。
          -------------------------------------------------

          java (PO,VO,TO,BO,DAO,POJO) 解釋

          PO(persistant object)
          持久對象
          o/r 映射的時(shí)候出現(xiàn)的概念,如果沒有 o/r 映射,沒有這個(gè)概念存在了。通常對應(yīng)數(shù)據(jù)模型 ( 數(shù)據(jù)庫 ), 本身還有部分業(yè)務(wù)邏輯的處理??梢钥闯墒桥c數(shù)據(jù)庫中的表相映射的 java 對象。最簡單的 PO 就是對應(yīng)數(shù)據(jù)庫中某個(gè)表中的一條記錄,多個(gè)記錄可以用 PO 的集合。 PO 中應(yīng)該不包含任何對數(shù)據(jù)庫的操作。


          VO(value object)
          值對象
          通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞,和 PO 一樣也是僅僅包含數(shù)據(jù)而已。但應(yīng)是抽象出的業(yè)務(wù)對象 , 可以和表對應(yīng) , 也可以不 , 這根據(jù)業(yè)務(wù)的需要 . 個(gè)人覺得同 DTO( 數(shù)據(jù)傳輸對象 ), web 上傳遞。

          TO(Transfer Object)
          ,數(shù)據(jù)傳輸對象
          在應(yīng)用程序不同 tie( 關(guān)系 ) 之間傳輸?shù)膶ο?/span>

          BO(business object)
          業(yè)務(wù)對象
          從業(yè)務(wù)模型的角度看 , UML 元件領(lǐng)域模型中的領(lǐng)域?qū)ο?。封裝業(yè)務(wù)邏輯的 java 對象 , 通過調(diào)用 DAO 方法 , 結(jié)合 PO,VO 進(jìn)行業(yè)務(wù)操作。
          business object:
          業(yè)務(wù)對象
          主要作用是把業(yè)務(wù)邏輯封裝為一個(gè)對象。這個(gè)對象可以包括一個(gè)或多個(gè)其它的對象。
          比如一個(gè)簡歷,有教育經(jīng)歷、工作經(jīng)歷、社會(huì)關(guān)系等等。
          我們可以把教育經(jīng)歷對應(yīng)一個(gè) PO ,工作經(jīng)歷對應(yīng)一個(gè) PO ,社會(huì)關(guān)系對應(yīng)一個(gè) PO 。
          建立一個(gè)對應(yīng)簡歷的 BO 對象處理簡歷,每個(gè) BO 包含這些 PO 。
          這樣處理業(yè)務(wù)邏輯時(shí),我們就可以針對 BO 去處理。

          QO
          :查詢對象

          POJO(plain ordinary java object)
          簡單無規(guī)則 java 對象
          純的傳統(tǒng)意義的 java 對象。就是說在一些 Object/Relation
          Mapping
          工具中,能夠做到維護(hù)數(shù)據(jù)庫表記錄的 persisent
          object
          完全是一個(gè)符合 Java Bean 規(guī)范的純 Java 對象,沒有增加別的屬性和方法。我的理解就是最基本的 Java Bean ,只有屬性字段及 setter getter 方法!。

          DAO(data access object)
          數(shù)據(jù)訪問對象
          是一個(gè) sun 的一個(gè)標(biāo)準(zhǔn) j2ee 設(shè)計(jì)模式, 這個(gè)模式中有個(gè)接口就是 DAO ,它負(fù)持久層的操作。為業(yè)務(wù)層提供接口。此對象用于訪問數(shù)據(jù)庫。通常和 PO 結(jié)合使用, DAO 中包含了各種數(shù)據(jù)庫的操作方法。通過它的方法 , 結(jié)合 PO 對數(shù)據(jù)庫進(jìn)行相關(guān)的操作。夾在業(yè)務(wù)邏輯與數(shù)據(jù)庫資源中間。配合 VO,
          提供數(shù)據(jù)庫的 CRUD 操作 ...

          ?

          ?

          DTO
          Data Transfer Object
          數(shù)據(jù)傳輸對象
          主要用于遠(yuǎn)程調(diào)用等需要大量傳輸對象的地方。
          比如我們一張表有 100 個(gè)字段,那么對應(yīng)的 PO 就有 100 個(gè)屬性。
          但是我們界面上只要顯示 10 個(gè)字段,
          客戶端用 WEB service 來獲取數(shù)據(jù),沒有必要把整個(gè) PO 對象傳遞到客戶端,
          這時(shí)我們就可以用只有這 10 個(gè)屬性的 DTO 來傳遞結(jié)果到客戶端,這樣也不會(huì)暴露服務(wù)端表結(jié)構(gòu) . 到達(dá)客戶端以后,如果用這個(gè)對象來對應(yīng)界面顯示,那此時(shí)它的身份就轉(zhuǎn)為 VO

          ?


          DAO
          :數(shù)據(jù)訪問對象 —— 同時(shí)還有 DAO 模式
          DTO
          :數(shù)據(jù)傳輸對象 —— 同時(shí)還有 DTO 模式

          ?

          ?


          O/R Mapper
          對象 / 關(guān)系 映射
          定義好所有的 mapping 之后,這個(gè) O/R
          Mapper
          可以幫我們做很多的工作。通過這些 mappings, 這個(gè) O/R
          Mapper
          可以生成所有的關(guān)于對象保存,刪除,讀取的 SQL 語句,我們不再需要寫那么多行的 DAL 代碼了。


          實(shí)體 Model( 實(shí)體模式 )
          DAL(
          數(shù)據(jù)訪問層 )
          IDAL(
          接口層 )
          DALFactory(
          類工廠 )
          BLL(
          業(yè)務(wù)邏輯層 )
          BOF???? Business Object Framework??????
          業(yè)務(wù)對象框架
          SOA???? Service Orient Architecture????
          面向服務(wù)的設(shè)計(jì)
          EMF???? Eclipse Model Framework???????
          Eclipse
          建模框架

          posted on 2009-03-28 16:07 luofeng225 閱讀(14020) 評(píng)論(1)  編輯  收藏 所屬分類: 未分類

          評(píng)論

          # re: VO ,PO ,BO,QO, DAO ,POJO,概念 2015-10-19 10:12 ss

          好  回復(fù)  更多評(píng)論   

          <2015年10月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          我曾經(jīng)聽到這么一個(gè)故事: 一個(gè)年輕的程序員問一個(gè)老程序員(一個(gè)比較牛逼的公司的CTO) 年輕程序員: 你為什么這么牛X., 就好像沒有你不會(huì)的。老程序員: 積累的。年輕程序員: 怎么才能積累到您的程度呢。我每天都在積累。但是似乎都沒有感覺到進(jìn)步。老程序員: 我從20歲開始做到了一件事情,直到今天,而且盡可能地保證不間斷。年輕程序員: 到底是什么? 老程序員: 我每天保證自己有2個(gè)小時(shí)在學(xué)習(xí)新的東西。

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          收藏夾

          Java Website

          java技術(shù)博客

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 阿拉善右旗| 南平市| 家居| 武邑县| 紫金县| 达尔| 教育| 广河县| 鹿泉市| 当阳市| 四会市| 贵阳市| 南澳县| 勐海县| 霞浦县| 淮北市| 怀仁县| 乌什县| 大关县| 克什克腾旗| 抚宁县| 宁明县| 莱州市| 裕民县| 博爱县| 白朗县| 太仆寺旗| 赤壁市| 呼图壁县| 凌海市| 南平市| 尼木县| 旅游| 阜城县| 奈曼旗| 西乌珠穆沁旗| 湖北省| 洪湖市| 新民市| 吕梁市| 白河县|