??????? 我一直很矛盾:是否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,減少風險),也不需要擔心未來的維護工作!(待續)?