一、PO
persistant object 持久對象,可以看成是與數據庫中的表相映射的java對象。最簡單的PO就是對應數據庫中某個表中的一條記錄,多個記錄可以用PO的集合。PO中應該不包含任何對數據庫的操作。生命周期和數據庫密切相關.在向數據庫插入記錄時創建該實體,刪除或關閉數據庫時該實體隨之消亡.很多優秀的開源框架都實現了將數據庫中的PO通過ORM用POJO來實際操作,如Hibernate,JDO等
二、VO
value object值對象。通常用於業務層之間的數據傳遞,和PO一樣也是僅僅包含數據而已。但應是抽象出的業務對象,可以和表對應,也可以不,這根據業務的需要.個人覺得同DTO(數據傳輸對象),在web上傳遞。
三、DAO
data access object 數據訪問對象,此對象用於訪問數據庫。通常和PO結合使用,DAO中包含了各種數據庫的操作方法。通過它的方法,結合PO對數據庫進行相關的操作。
四、BO
business object 業務對象,封裝業務邏輯的java對象,通過調用DAO方法,結合PO,VO進行業務操作。
五、POJO
plain ordinary java object 簡單無規則java對象,指那些沒有從任何類繼承、也沒有實現任何接口,更沒有被其它框架侵入的java對象,VO和PO應該都屬於它。
POJO的意義:
POJO讓開發者可專注於業務邏輯和脫離框架的單元測試。除此之外, 由於POJO並不須要繼承框架的類或實現其接口,開發者能夠極其靈活地搭建繼承結構和建造應用。
POJO的意義就在於它的簡單而靈活性,因為它的簡單和靈活,使得POJO能夠任意擴展,從而勝任多個場合,也就讓一個模型貫穿多個層成為現實。
先寫一個核心POJO,然后實現業務邏輯接口和持久化接口,就成了Domain Model; UI需要使用時,就實現數據綁定接口,變成VO(View Object)。
POJO的擴展:
POJO僅包含最簡單的字段屬性,沒有多余的東西,它本質上就是一個普通的JavaBean。
但是在POJO的基礎上,能夠擴展出不同的對象。
為POJO增加了持久化的方法(Insert、Update、Delete……)之后,POJO就變成了PO。
為POJO增加了數據綁定功能之后,POJO就變成了View Object,即UI Model。
為POJO增加業務邏輯的方法(比如單據審核、轉帳……)之后,POJO就變成了Domain Model。
POJO還可以當作DTO使用。
POJO和JavaBean是我們常見的兩個關鍵字,一般容易混淆。
JavaBean 是一種JAVA語言寫成的可重用組件。它的方法命名,構造及行為必須符合特定的約定:
- 這個類必須有一個公共的缺省構造函數。
- 這個類的屬性使用getter和setter來訪問,其他方法遵從標准命名規范。
- 這個類應是可序列化的。
1、 JavaBean是一個public的類
2、 JavaBean有一個不帶參數的構造方法
3、 JavaBean中的屬性通過getXXX()和setXXX()進行操作
O/R Mapping 是Object Relational Mapping(對象關系映射)的縮寫。通俗點講,就是將對象與關系數據庫綁定,用對象來表示關系數據。在O/R Mapping的世界里,有兩個基本的也是重要的東東需要了解,即VO,PO。VO,值對象(Value Object),PO,持久對象(Persisent Object),它們是由一組屬性和屬性的get和set方法組成。從結構上看,它們並沒有什么不同的地方。但從其意義和本質上來看是完全不同的。
1.VO是用new關鍵字創建,由GC回收的。PO則是向數據庫中添加新數據時創建,刪除數據庫中數據時削除的。並且它只能存活在一個數據庫連接中,斷開連接即被銷毀。
2.VO是值對象,精確點講它是業務對象,是存活在業務層的,是業務邏輯使用的,它存活的目的就是為數據提供一個生存的地方。
PO則是有狀態的,每個屬性代表其當前的狀態。它是物理數據的對象表示。使用它,可以使我們的程序與物理數據解耦,並且可以簡化對象數據與物理數據之間的轉換。
3.VO的屬性是根據當前業務的不同而不同的,也就是說,它的每一個屬性都一一對應當前業務邏輯所需要的數據的名稱。
PO的屬性是跟數據庫表的字段一一對應的。PO對象需要實現序列化接口。