1. 程式人生 > >Java中DAO/DTO/PO/VO/BO/QO/POJO

Java中DAO/DTO/PO/VO/BO/QO/POJO

面向 常用 beans 經歷 封裝 query orm dao 程序

ORM:是Object Relational Mapping(對象關系映射)的縮寫。

通俗點講,就是將對象與關系數據庫綁定,用對象來表示關系數據。在O/R/M的世界裏,有兩個基本的也是重要的東東需要了解,即 VO , PO 。

PO:(Persistant Object ),持久對象

可以看成是與數據庫中的表相映射的Java對象。使用Hibernate來生成PO是不錯的選擇。它們是由一組屬性和屬性的get和set方法組成。

最簡單的PO就是對應數據庫中某個表中的一條記錄,多個記錄可以用PO的集合。 PO中應該不包含任何對數據庫的操作。

VO:(Value Object) ,值對象

通常用於業務層之間的數據傳遞,和PO一樣也是僅僅包含數據而已。但應是抽象出的業務對象,可以和表對應,也可以不,這根據業務的需要。

PO只能用在數據層,VO用在商業邏輯層和表示層。各層操作屬於該層自己的數據對象,這樣就可以降低各層之間的耦合,便於以後系統的維護和擴展。

VO與PO區別:

  • VO是用new關鍵字創建,由GC回收的。
  • PO則是向數據庫中添加新數據時創建,刪除數據庫中數據時削除的。並且它只能存活在一個數據庫連接中,斷開連接即被銷毀。
  • VO是值對象,精確點講它是業務對象,是存活在業務層的,是業務邏輯使用的,它存活的目的就是為數據提供一個生存的地方。
  • PO則是有狀態的,每個屬性代表其當前的狀態。它是物理數據的對象表示。使用它,可以使程序與物理數據解耦,並且可以簡化對象數據與物理數據之間的轉換。
  • VO的屬性是根據當前業務的不同而不同的,也就是說,它的每一個屬性都一一對應當前業務邏輯所需要的數據的名稱。
  • PO的屬性是跟數據庫表的字段一一對應的。
  • PO對象需要實現序列化接口。

DAO:(Data Access Objects) ,數據訪問對象接口

DAO是Data Access Object數據訪問接口,數據訪問:顧名思義就是與數據庫打交道。夾在業務邏輯與數據庫資源中間。

JavaEE開發人員使用數據訪問對象(DAO)設計模式把底層的數據訪問邏輯和高層的商務邏輯分開。實現DAO模式能夠更加專註於編寫數據訪問代碼。

DAO模式是標準的JavaEE設計模式之一。開發人員使用這個模式把底層的數據訪問操作和上層的商務邏輯分開。一個典型的DAO實現有下列幾個組件:

  • 一個DAO工廠類。
  • 一個DAO接口。
  • 一個實現DAO接口的具體類。
  • 數據傳遞對象(有些時候叫做值對象)。

具體的DAO類包含了從特定的數據源訪問數據的邏輯。

通常和PO結合使用,DAO中包含了各種數據庫的操作方法。通過它的方法 , 結合PO對數據庫進行相關的操作。夾在業務邏輯與數據庫資源中間。配合VO,提供數據庫的CRUD操作。

BO:(Business Object),業務對象層

表示應用程序領域內“事物”的所有實體類。這些實體類駐留在服務器上,並利用服務類來協助完成它們的職責。

封裝業務邏輯的Java對象 , 通過調用DAO方法 , 結合PO、VO進行業務操作。

主要作用是把業務邏輯封裝為一個對象。這個對象可以包括一個或多個其它的對象。

比如一個簡歷,有教育經歷、工作經歷、社會關系等等。 可以把教育經歷對應一個PO,工作經歷對應一個PO,社會關系對應一個 PO 。 建立一個對應簡歷的BO對象處理簡歷,每個BO包含這些PO 。 這樣處理業務邏輯時,就可以針對BO去處理。

POJO(POJOs):(Plain Old Java Objects),簡單的Java對象

實際就是普通JavaBeans,使用POJO名稱是為了避免和EJB混淆起來, 而且簡稱比較直接。

其中有一些屬性及其getter、setter方法的類,有時可以作為Value Object或DTO(Data Transform Object)來使用。當然,如果有一個簡單的運算屬性也是可以的,但不允許有業務方法,也不能攜帶有Connection之類的方法。

TO:(Transfer Object),數據傳輸對象

在應用程序不同的關系之間傳輸的對象 。

QO:(Query Object),查詢對象

DTO:(Data Transfer Object),數據傳輸對象

主要用於遠程調用等需要大量傳輸對象的地方。

比如一張表有100個字段,那麽對應的PO就有100個屬性。但是界面上只要顯示10個字段,客戶端用Web Service來獲取數據,沒有必要把整個PO對象傳遞到客戶端,這時就可以用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構。到達客戶端以後,如果用這個對象來對應界面顯示,那此時它的身份就轉為VO。

其它:

model:一般都是JavaBean對象,例如與數據庫的某個表相關聯。

service:供外部調用,等於對dao,model等進行了包裝。

impl:定義的接口實現。

util:通常都是工具類,如字符串處理、日期處理等。

dal:數據訪問層。

idal:數據訪問接口層。

dalfactory:數據訪問層工廠。

bll:業務邏輯層。

BOF:Business Object Framework,業務對象框架

SOA:Service Orient Architecture,面向服務的設計

EMF:Eclipse Model Framework,Eclipse建模框架

參考:

http://www.cnblogs.com/bluestorm/archive/2012/09/26/2703234.html

http://www.cnblogs.com/dzcWeb/p/7060734.html

Java中DAO/DTO/PO/VO/BO/QO/POJO