VO(DTO)與PO(DAO)的概念
PO即 Persistence Object
VO即 Value Object
VO和PO的主要區別在于:
VO是獨立的Java Object。
PO是由Hibernate納入其實體容器(Entity Map)的對象,它代表了與數據庫中某條記錄對應的Hibernate實體,PO的變化在事務提交時將反應到實際數據庫中。
??? 實際上,這個VO被用作Data Transfer Object,即所謂的DTO。想必,PO就是Data Access Object ---DAO了啦。為什么要有這二者之分呢?如在傳統的MVC架構中,位于Model層的PO,是否允許被傳遞到其他層面。由于PO的更新最終將被映射到實際數據庫中,如果PO在其他層面(如View層)發生了變動,那么可能會對Model層造成意想不到的破壞。