1. 程式人生 > >POJO,JAVABEAN,Entity,domain,DTO,ejb區別

POJO,JAVABEAN,Entity,domain,DTO,ejb區別

quest 目標 adduser 操作 設計 對象 取數 spa 工作經歷

在網上搜索過所有名詞的定義後,我總結了下面這張表

應該把java中一些對象縮寫都說明白了

2018.04.21

諸多java對象縮寫的定義和作用,區別與聯系
類型 定義 作用 其他
pojo (Plain Ordinary Java Object)簡單的Java對象 普通JavaBeans,有時可以作為VO(value-object)或DTO(Data Transfer Object)來使用
javabean 為寫成JavaBean,類必須是具體和公共的,並且具有無參數的構造器。 簡單的就是pojo,復雜的就是ejb
ejb EJB(Enterprise JavaBean),定義用於開發基於組件的企業多重應用程序標準 java的核心代碼,分別是回話Bean(Session Bean)、實體Bean(Entity Bean)、和消息驅動Bean(MessageDriven Bean)
domain domain是範圍,界線,也被用來批一個變量的有效作用域 也常用這個詞做一個包,然後在裏面放些DAO類文件. net.baidu.domain.AddUserDao
dto 數據傳輸對象(Data Transfer Object),是一種設計模式之間傳輸數據的對象 數據傳輸目標往往是數據訪問對象從數據庫中檢索數據,從PO中取值進行傳輸
entity 實體bean,一般是用於ORM對象關系映射 一個實體映射成一張表,一般無業務邏輯代碼。
po persistant object持久對象 最形象的理解就是一個PO就是數據庫中的一條記錄,如hibernate中的一個持久化對象
vo ViewObject表現層對象 主要對應界面顯示的數據對象。對於一個WEB頁面,用一個VO對象對應整個界面的值。
dao data access object數據訪問對象 主要用來封裝對數據庫的訪問,包含了各種數據庫的操作方法。通過它可以把POJO持久化為PO,用PO組裝出來VO、DTO
bo business object業務對象 主要作用是把業務邏輯封裝為一個對象。這個對象可以包括一個或多個其它的對象。

BObusiness object業務對象

主要作用是把業務邏輯封裝為一個對象。這個對象可以包括一個或多個其它的對象。比如一個簡歷,有教育經歷、工作經歷、 關系等等。
我們可以把教育經歷對應一個PO,工作經歷對應一個PO, 關系對應一個PO。
建立一個對應簡歷的BO對象處理簡歷,每個BO包含這些PO。這樣處理業務邏輯時,我們就可以針對BO去處理。

DTO :Data Transfer Object數據傳輸對象,主要用於遠程調用等需要大量傳輸對象的地方。
比如我們一張表有100個字段,那麽對應的PO就有100個屬性。但是我們界面上只要顯示10個字段,
客戶端用WEB service來獲取數據,沒有必要把整個PO對象傳遞到客戶端,
這時我們就可以用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端以後,如果用這個對象來對應界面顯示,那此時它的身份就轉為VO

 
  VO、PO、FormBean之間的區別:

VO是獨立的Java Object;而PO是Hibernate納入其實體容器(Entity Map)的對象。

PO代表了與數據庫中某條記錄相對應的Hibernata實體,PO的變化在事務提交時將反映到實際的數據庫中。

FormBean只是HTML中表單的封裝,是為了弱化request中存儲數據的作用,將request對象的get()方法轉化為對象的存取值。
  
 VO和PO在結構上看,沒什麽區別。但從本質上看是完全不同的。
  
  VO由new關鍵字創建,由GC回收。PO則是向數據庫中添加新數據時創建,刪除數據庫中數據時刪除,並且它只能存活在一個數據庫連接中,斷開連接即被銷毀。
  
  VO是業務對象,由業務邏輯使用,它存活的目的就是為數據提供一個生存的地方。PO則是數據對象的表現,它可以簡化對象數據與物理數據的轉換。
  
  VO的屬性根據當前的業務不同而不同。PO的屬性則是跟數據庫表的字段一一對應。PO對象需要實現序列化接口。


  在Hibernate中,最核心的概念就是對PO的狀態管理。一個PO有三種狀態:
  1.未被持久化的VO,此時就是一個內存對象VO,由JVM管理生命周期。
  2.已被持久化的PO,並且在Session生命周期內,此時映射數據庫連接,由數據庫管理生命周期。
  3.曾被持久化過,但現在和Session已經托管(detached)了,以VO的身份在運行。它還可以進入另一個Session,繼續PO狀態管理。
  
  需要註意的是, PO最好只在持久層使用,如果脫離持久層到處使用,會給Hibernate帶來不小的PO對象維護開銷。

POJO,JAVABEAN,Entity,domain,DTO,ejb區別