JAVA基礎-20.Java中對象的簡稱

注:在開發過程中,與上下游、數據庫等交互時,定義明確的操作對象更有利於面向對象的需求開發、迭代和維護。總結經常使用的對象如下:

  1. PO(Persistant Object) 持久對象

    用於表示數據庫中的一條記錄映射成的 java 對象。PO 僅僅用於表示數據,沒有任何數據操作。

    通常遵守 Java Bean 的規範,擁有 getter/setter 方法。可以理解是一個PO就是數據庫中的一條記錄;可以理解某個事務依賴的原始數據;好處是可以將一條記錄作爲一個對象處理,可以方便轉化爲其他對象

  2. BO(Business Object) 業務對象

    封裝對象、複雜對象,裏面可能包含多個類。主要作用是把業務邏輯封裝爲一個對象。

    這個對象可以包括一個或多個其它的對象。用於表示一個業務對象。BO 包括了業務邏輯,常常封裝了對 DAO、RPC 等的調用,可以進行 PO 與 VO/DTO 之間的轉換。BO 通常位於業務層,要區別於直接對外提供服務的服務層:BO 提供了基本業務單元的基本業務操作,在設計上屬於被服務層業務流程調用的對象,一個業務流程可能需要調用多個 BO 來完成。比如一個簡歷,有教育經歷、工作經歷、社會關係等等。我們可以把教育經歷對應一個PO,工作經歷對應一個PO,社會關係對應一個PO。建立一個對應簡歷的BO對象處理簡歷,每個BO包含這些PO。 這樣處理業務邏輯時,我們就可以針對BO去處理。

  3. VO(Value Object) 表現對象

    前端界面展示;value object值對象;ViewObject表現層對象;主要對應界面顯示的數據對象。

    對於一個WEB頁面,或者SWT、SWING的一個界面,用一個VO對象對應整個界面的值;對於Android而言即是activity或view中的數據元素。用於表示一個與前端進行交互的 java 對象。有的朋友也許有疑問,這裏可不可以使用 PO 傳遞數據?實際上,這裏的 VO 只包含前端需要展示的數據即可,對於前端不需要的數據,比如數據創建和修改的時間等字段,出於減少傳輸數據量大小和保護數據庫結構不外泄的目的,不應該在 VO 中體現出來。通常遵守 Java Bean 的規範,擁有 getter/setter 方法。

  4. DTO(Data Transfer Object)

    數據傳輸對象前端調用時傳輸;也可理解成“上層”調用時傳輸; 比如我們一張表有100個字段,那麼對應的PO就有100個屬性。

    但是我們界面上只要顯示10個字段,客戶端用WEB service來獲取數據,沒有必要把整個PO對象傳遞到客戶端,這時我們就可以用只有這10個屬性的DTO來傳遞結果到客戶端,這樣也不會暴露服務端表結構.到達客戶端以後,如果用這個對象來對應界面顯示,那此時它的身份就轉爲VO。用於表示一個數據傳輸對象。DTO 通常用於不同服務或服務不同分層之間的數據傳輸。DTO 與 VO 概念相似,並且通常情況下字段也基本一致。但 DTO 與 VO 又有一些不同,這個不同主要是設計理念上的,比如 API 服務需要使用的 DTO 就可能與 VO 存在差異。通常遵守 Java Bean 的規範,擁有 getter/setter 方法。

  5. DAO(Data access object) 數據訪問對象

    這個大家最熟悉,和上面幾個O區別最大,基本沒有互相轉化的可能性和必要,主要用來封裝對數據庫的訪問。

    通過它可以把POJO持久化爲PO,用PO組裝出來VO、DTO;用於表示一個數據訪問對象。使用 DAO 訪問數據庫,包括插入、更新、刪除、查詢等操作,與 PO 一起使用。DAO 一般在持久層,完全封裝數據庫操作,對外暴露的方法使得上層應用不需要關注數據庫相關的任何信息。

  6. POJO(Plain ordinary java object) 簡單java對象

    一個POJO持久化以後就是PO;直接用它傳遞、傳遞過程中就是DTO;直接用來對應表示層就是VO。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章