深入理解 DAO,DTO,DO,VO,AO,BO,POJO,PO,Entity,Model,View 各個模型對象的概念

DAO (Data Access Object)數據訪問對象

  • DAO(Data Access Object)是一個數據訪問接口,數據訪問:顧名思義就是與數據庫打交道。夾在業務邏輯與數據庫資源中間。
  • 一般在 業務邏輯層(Service) 數據庫(SQL) 的訪問時使用,一般能對SQL進行操作。
  • xxxDAO,xxx即爲實體類名(Entity實體)
  • 其它資料:在覈心J2EE模式中是這樣介紹DAO模式的:爲了建立一個健壯的J2EE應用,應該將所有對數據源的訪問操作抽象封裝在一個公共API中。用程序設計的語言來說,就是建立一個接口,接口中定義了此應用程序中將會用到的所有事務方法。在這個應用程序中,當需要和數據源進行交互的時候則使用這個接口,並且編寫一個單獨的類來實現這個接口在邏輯上對應這個特定的數據存儲。
    DAO是微軟的第一個面向對象的數據庫接口。DAO對象封閉了Access的Jet函數。通過Jet函數,它還可以訪問其他的結構化查詢語言(SQL)數據庫。

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

  • 數據傳輸對象 DTO (Data Transfer Object),是一種設計模式之間傳輸數據的軟件應用系統。數據傳輸目標往往是數據訪問對象從數據庫中檢索數據。數據傳輸對象與數據交互對象或數據訪問對象之間的差異是一個以不具有任何行爲除了存儲和檢索的數據(訪問和存取器)。
  • 一般在 前端(Web) 控制層(Controller)進行數據傳輸時使用,說白了就是前端向後臺提交數據。
  • xxxDTO,xxx爲業務領域相關的名稱。

DO (Domain Object)領域對象

  • 領域對象 DO 是從現實世界中抽象出來的有形或無形的業務實體。在與數據有關的操作中數據存在數據庫使用 DAO訪問被取出來時,一般會將這些數據規範化的定義成類,而這個類就是DO,用來接收數據庫對應的實體,它是一種抽象化的數據狀態,介於數據庫與業務邏輯之間。
  • 一般在 業務邏輯層(Service) 數據庫(SQL) 的 訪問時 接收數據 使用。
  • xxxDO,xxx即爲數據表名
  • 另外:DO與Entity概念上淺顯的相同,他們在實際應用中是一個東西。稍微的不同點就是DO是與數據庫存在着某種映射關係的Entity,總的來說DO是Entity的一種。

VO(View Object)視圖模型

  • VO是顯示視圖模型,視圖對象,用於展示層,它的作用是把某個指定頁面(或組件)的所有數據封裝起來。如果是一個DTO對應一個VO,則DTO=VO;但是如果一個DTO對應多個VO,則展示層需要把VO轉換爲服務層對應方法所要求的DTO,傳送給服務層。從而達到服務層與展示層解耦的效果。
  • 一般用在業務邏輯層(Service) 前端(Web)視圖模型效果控制的展示上,說白了就是後臺向前端傳輸數據。
  • xxxVO,xxx一般爲網頁名稱。

AO(Application Object)應用對象

  • AO是一個較爲籠統的概念,因爲太過於常見而並沒有刻意的去描繪它的細節。舉一個很簡單的栗子:控制層(Controller)業務邏輯層(Service) 查詢一條或多條數據,這個數據的傳輸過程的運載就是AO完成。在正常的業務邏輯中一般都有很多種類型的數據,例如 整形、字符型、集合、類 等,我們把它統稱爲AO。
  • 在**控制層(Controller)**與 **業務邏輯層(Service)**層之間抽象的複用對象模型,有時候極爲貼近展示層,複用度不高。

BO( Business Object)業務對象

  • 業務對象(Business Object,BO)是對數據進行檢索和處理的組件。主要作用是把業務邏輯封裝爲一個對象。這個對象可以包括一個或多個其它的對象。形象描述爲一個對象的形爲和動作,當然也有涉及到基它對象的一些形爲和動作。
  • 一般用在包含業務功能模塊 的具體實例上,比如我們寫了一個Controller、一個Service、一個DAO、一個工具類等等這一系列實例組合後能實現一些功能,這些一系列實例組合爲一個組件,這個組件就是BO。
  • 其它資料:是簡單的真實世界的軟件抽象。業務對象通常位於中間層或者業務邏輯層。BO支持序列化和反序列化,可以輕易地將BO的Java實例轉換爲一個XML文件或者一個流保存起來,並且在需要的時候,將這個BO從XML或者流中轉換回一個Java實例。

POJO( Plain Ordinary Java Object)純普通Java對象

  • 總的來說POJO包含DO、DTO、BO、VO,這些本質上都是一個簡單的java對象,實際就是普通JavaBeans,是爲了避免和EJB混淆所創造的簡稱
  • 使用POJO名稱是爲了避免和EJB混淆起來, 而且簡稱比較直接.。其中有一些屬性及其getter setter方法的類,沒有業務邏輯,有時可以作爲VO(value -object)或dto(Data Transform Object)來使用.當然,這裏特意說明純普通Java對象,如果你有一個簡單的運算屬性也是可以的,但不允許有業務方法,也不能攜帶有connection之類的方法。

PO(Persistent Object)持久化對象

  • 數據庫表中的記錄在java對象中的顯示狀態。最形象的理解就是一個PO就是數據庫中的一條記錄。
    好處是可以把一條記錄作爲一個對象處理,可以方便的轉爲其它對象。
  • 例如我們有一條數據,現在有一個簡單類而且已經是被賦予了這條數據的實例,那麼目前這條數據在這個簡單類的存在狀態就是PO,不管這個簡單類是DO還是BO還是其他。PO只是數據持久化的一個狀態。

Entity(應用程序域中的一個概念)實體

  • ADO .NET Entity Framework 應用程序域中的一個概念,數據類型在該域中定義。
  • 在計算機網絡中,實體這一較爲抽象的名詞表示任何可能發送或接受信息的硬件或軟件進程。在許多情況下,實體就是一個特定的軟件模塊。
  • 說白了Eitity是一個未被持久化的對象,它是一個類,從現實抽象到代碼的一個類。

Model (概念實體模型)實體類和模型

  • Model是計算機程序設計中有兩個概念:一個是三層架構中的實體類,另一個是MVC架構中的模型。
  • 在“三層架構”中,爲了面向對象編程,將各層傳遞的數據封裝成實體類,便於數據傳遞和提高可讀性。
  • 在MVC(模型Model-視圖View-控制器Controller)模式中,Model代表模型,是業務流程/狀態的處理以及業務規則的制定,接受視圖請求的數據,並返回最終的處理結果。業務模型的設計可以說是MVC最主要的核心。

View (概念視圖模型)視圖模型

  • 在MVC(模型Model-視圖View-控制器Controller)模式中,View代表視圖,用來解析Model帶來的數據模型,以展示視圖數據,View的模型覺決定了需要什麼樣的Model來對接,相互聯繫。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章