常言笑的家

          Spring, Hibernate, Struts, Ajax, RoR

          POJO、VO、PO、FormBean什么關系

          看了一下Web開發的書,發現了這些詞。讓我很疑惑。這些詞匯什么意思,又有什么關系?

          看了一些文檔之后,對它們的基本概念有了最基礎的認識。

          POJO:Pure Old Java Object,符合Java Bean屬性規范的簡單Java對象,通常也稱為VO(Value Object,值對象)。

          PO:Persistent Object,持久化對象。

          VO、PO、FormBean之間的區別:VO是獨立的Java Object;而PO是Hibernate納入其實體容器(Entity Map)的對象。它代表了與數據庫中某條記錄相對應的Hibernata實體,PO的變化在事務提交時將反映到實際的數據庫中。FormBean只是HTML中表單的封裝,是為了弱化request中存儲數據的作用,將request對象的get()方法轉化為對象的存取值。

          VO和PO在結構上看,沒什么區別。但從本質上看是完全不同的。

          VO由new關鍵字創建,由GC回收。PO則是向數據庫中添加新數據時創建,刪除數據庫中數據時刪除,并且它只能存活在一個數據庫連接中,斷開連接即被銷毀。

          VO是業務對象,由業務邏輯使用,它存活的目的就是為數據提供一個生存的地方。PO則是數據對象的表現,它可以簡化對象數據與物理數據的轉換。

          VO的屬性根據當前的業務不同而不同。PO的屬性則是跟數據庫表的字段一一對應。PO對象需要實現序列化接口。

          在Hibernate中,最核心的概念就是對PO的狀態管理。一個PO有三種狀態:
          1.未被持久化的VO,此時就是一個內存對象VO,由JVM管理生命周期。
          2.已被持久化的PO,并且在Session生命周期內,此時映射數據庫連接,由數據庫管理生命周期。
          3.曾被持久化過,但現在和Session已經托管(detached)了,以VO的身份在運行。它還可以進入另一個Session,繼續PO狀態管理。

          需要注意的是, PO最好只在持久層使用,如果脫離持久層到處使用,會給Hibernate帶來不小的PO對象維護開銷。

          posted on 2007-06-27 15:54 常言笑 閱讀(944) 評論(1)  編輯  收藏 所屬分類: 技術總結

          Feedback

          # re: POJO、VO、PO、FormBean什么關系 2009-09-09 17:08 kospon

          經典  回復  更多評論   


          My Links

          Blog Stats

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 汶川县| 桑植县| 涟源市| 会泽县| 宝兴县| 桐柏县| 星子县| 铜川市| 平谷区| 新闻| 黄浦区| 正镶白旗| 济宁市| 绵竹市| 昭平县| 漳州市| 扎赉特旗| 公主岭市| 穆棱市| 富蕴县| 黔西县| 云南省| 博乐市| 新邵县| 舟山市| 玛曲县| 龙川县| 兰州市| 镇康县| 黄浦区| 崇阳县| 晋城| 龙游县| 边坝县| 万荣县| 塔河县| 葫芦岛市| 横峰县| 玛沁县| 云林县| 馆陶县|