PO:Persistent Object,持久化對象

來源:互聯網
上載者:User

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對象維護開銷

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.