java的幾種對象(PO,VO,DAO,BO,POJO)


一、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語言寫成的可重用組件。它的方法命名,構造及行為必須符合特定的約定

  1. 這個類必須有一個公共的缺省構造函數。
  2. 這個類的屬性使用getter和setter來訪問,其他方法遵從標准命名規范。
  3. 這個類應是可序列化的。
因為這些要求主要是靠約定而不是靠實現接口,所以許多開發者把JavaBean看作遵從特定命名約定的POJO。
簡而言之,當一個Pojo可序列化,有一個無參的構造函數,使用getter和setter方法來訪問屬性時,他就是一個JavaBean。
 
JavaBean是Java類,同時它也具有自己的一些特征:

       1、 JavaBean是一個public的類

       2、 JavaBean有一個不帶參數的構造方法

       3、 JavaBean中的屬性通過getXXX()和setXXX()進行操作

    基於java語言的,因此javabean不依賴平台

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對象需要實現序列化接口。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM