關於JAVA的PO與VO)

來源:互聯網
上載者:User
 我一直很矛盾:是否PO可以用在商業邏輯層,當作VO使用;還是將兩者分開。在許多論壇上,這兩者之爭也很激烈。所以今天我打算把我的想法寫下來。 
          首先,java有幾種對象(PO,VO,DAO,BO,POJO)   
         一、PO:persistant object 持久對象,可以看成是與資料庫中的表相映射的java對象。使用Hibernate來產生PO是不錯的選擇。 
          二、VO:value object值對象。通常用於業務層之間的資料傳遞,和PO一樣也是僅僅包含資料而已。但應是抽象出的業務對象,可以和表對應,也可以不,這根據業務的需要.
      有一種觀點就是:PO只能用在資料層,VO用在商業邏輯層和展示層。各層操作屬於該層自己的資料對象,這樣就可以降低各層之間的耦合,便於以後系統的維護和擴充。如果將PO用在各個層中就相當於我們使用全域變數,我們知道在OO設計非常不贊成使用全域變數。 
       但是每次都得進行VO-PO的轉換,也確實很煩。我覺得有時候也可以在某個商業邏輯或者展示層使用PO,此時在這個商業邏輯的過程中PO的狀態是不發生變化的,比如顯示一條商品詳細資料的商業邏輯。 
       在開發過的項目中,規模都很小,我一直都把PO當VO用,因為PO確實很方便,結合Hibernate的DAO,我使用JAVA的集合對象作為值傳遞的載體,當然Struts也是我的不二之選。 
       我認為:在一些直觀的,簡單的,不易發生變化的,不需要涉及多個PO時,傳遞值還是使用PO好,這樣可以減少大量的工作量(也就意味著減少bug,減少風險),也不需要擔心未來的維護工作
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.