在JAVA開發的過程中,常常遇到這樣的包名,如entity、bo、vo、po、dto、pojo等,許多初學者看到這樣的詞語都回感到迷惑,下面這一篇就把這些不同而又容易讓人產生迷惑的實體類做一個很好的區分。
先來一張圖:
Dao(data access object)
代表數據訪問對象的意思,是sun的一個標準j2ee設計模式的接口之一,負責持久層的操作 。這個基本都了解,Dao和上面幾個O區別最大,基本沒有互相轉化的可能性和必要,主要用來封裝對數據的訪問,注意,是對數據的訪問,不是對數據庫的訪問。
Pojo(plain ordinary java object)
代表簡單無規則java對象
純的傳統意義的java對象,最基本的Java Bean只有屬性加上屬性的get和set方法.
POJO讓開發者可專注于業務邏輯和脫離框架的單元測試。除此之外, 由于POJO并不需要繼承框架的類或實現其接口,開發者能夠極其靈活地搭建繼承結構和建造應用。
作用:POJO的意義就在于它的簡單而靈活性,因為它的簡單和靈活,使得POJO能夠任意擴展,從而勝任多個場合,也就讓一個模型貫穿多個層成為現實。
先寫一個核心POJO,然后實現業務邏輯接口和持久化接口,就成了Domain Model; UI需要使用時,就實現數據綁定接口,變成VO(View Object),需要進行傳輸的時候就可以轉化為Dto對象。
Dto(data transfer object)
代表數據傳輸對象的意思
是一種設計模式之間傳輸數據的軟件應用系統,數據傳輸目標往往是數據訪問對象從數據庫中檢索數據.數據傳輸對象與數據交互對象或數據訪問對象之間的差異是一個以不具任何行為除了存儲和檢索的數據(訪問和存取器)
簡而言之,就是接口之間傳遞的數據封裝
表里面有十幾個字段:id,name,gender(M/F),age……
頁面需要展示三個字段:name,gender(男/女),age
所以Dto的作用:
一是能提高數據傳輸的速度(減少了傳輸字段)
二能隱藏后端表結構
Vo(value object)
代表值對象的意思,通常用于業務層之間的數據傳遞,由new創建,由GC回收。
主要體現在視圖的對象,對于一個WEB頁面將整個頁面的屬性封裝成一個對象,然后用一個VO對象在控制層與視圖層進行傳輸交換。
Po(persistant object)
persistant object:持久層對象
是ORM(Objevt Relational MApping)框架中Entity,PO屬性和數據庫中表的字段形成一一對應關系
用簡單的一段話來總結全過程,PO對應數據庫中的各個字段,在DAO層中轉化為Dto進行傳輸,最后以Vo的形式在業務層顯示。POJO是傳統意義的java對象,可脫離業務存在。






