SpringBoot框架中各層(DTO、DAO、Service、Controller)理解


1.粗略理解

View層👉Controller層(響應用戶請求)👉Service層(接口👉接口實現類)👉DAO層,即Mapper層(抽象類:xxxMapper.java文件,具體實現在xxxMapper.xml)👉Model層(實體類:xxx.java)

2.VO,DTO,DO,PO理解

2.1解釋

VO:View Object,視圖層,其作用是將指定頁面的展示數據封裝起來。

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

DO:Domain Object,領域對象

PO:Persistent Object,持久化對象

2.2模型

用戶發出請求(填寫表單),表單的數據被展示層匹配為VO

展示層把VO轉換為服務層對應方法所要求的DTO,提交給服務層

服務層先將DTO的數據構造(或重建)一個DO,調用DO的業務方法完成具體業務

服務層再將DO轉換為持久層對應的PO,調用持久層的持久化方法,把PO傳遞持久化方法,完成持久化操

3.PO,VO,BO,DTO,JavaBean,JavaBeans,POJO,DAO

PO:持久對象 (persistent object),po(persistent object)就是在Object/Relation Mapping框架中的Entity,po的每個屬性基本上都對應數據庫表里面的某個字段。完全是一個符合Java Bean規范的純Java對象,沒有增加別的屬性和方法。持久對象是由insert數據庫創建,由數據庫delete刪除的。基本上持久對象生命周期和數據庫密切相關。


VO: 表現層對象(View Object),主要對應展示界面顯示的數據對象,用一個VO對象來封裝整個界面展示所需要的對象數據,數據脫敏,去掉用戶隱私數據。


BO:業務對象層的縮寫(Business Object),封裝業務邏輯的java對象,通過調用DAO方法,結合PO,VO進行業務操作。具體可以看網上的一個例子:

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


DTO:數據傳輸對象(Data Transfer Object),是一種設計模式之間傳輸數據的軟件應用系統。數據傳輸目標往往是數據訪問對象從數據庫中檢索數據。數據傳輸對象與數據交互對象或數據訪問對象之間的差異是一個以不具有任何行為除了存儲和檢索的數據(訪問和存取器)。簡單來說,當我們需要一個對象10個字段的內容,但這個對象總共有20個字段,我們不需要把整個PO對象全部字段傳輸到客戶端,而是可以用DTO重新封裝,傳遞到客戶端。此時,如果這個對象用來對應界面的展現,就叫VO。


JavaBean:一種可重用組件,即“一次性編寫,任何地方執行,任何地方重用”。滿足三個條件①類必須是具體的和公共的②具有無參構造器③提供一致性設計模式的公共方法將內部域暴露成員屬性。

主要用途:可以用在 功能、處理、值、數據庫訪問和JSP中任何可以用Java代碼創造的對象。

有兩種:一種是有用戶界面(UI,User Interface)的JavaBean;還有一種是沒有用戶界面,主要負責處理事務(如數據運算,操縱數據庫)的JavaBean。JSP通常訪問的是后一種JavaBean。

分類:通常有Session bean,Entity bean,MessageDrivenBean三大類

1.Session bean會話構件,是短暫的對象,運行在服務器上,並執行一些應用邏輯處理,它由客戶端應用程序建立,其數據需要自己來管理。分為無狀態和有狀態兩種。

2.Entity bean實體構件,是持久對象,可以被其他對象調用。在建立時指定一個唯一標示的標識,並允許客戶程序,根據實體bean標識來定位beans實例。多個實體可以並發訪問實體bean,事務間的協調由容器來完成。

3.MessageDriven Bean消息構件,是專門用來處理JMS(Java Message System)消息的規范(EIB2.0)。JMS是一種與廠商無關的API,用來訪問消息收發系統,並提供了與廠商無關的訪問方法,以此來訪問消息收發服務。JMS客戶機可以用來發送消息而不必等待回應。

JavaBeans:JavaBeans 從狹義來說,指的是 JavaBeans 規范也就是位於 java.beans 包中的一組 API。從廣義上來說,JavaBeans 指的是 API 集合,比如 Enterprise JavaBeans。


POJO:POJO(Plain Ordinary Java Object)簡單的Java對象,實際就是普通JavaBeans,是為了避免和EJB混淆所創造的簡稱。通指沒有使用Entity Beans的普通java對象,可以把POJO作為支持業務邏輯的協助類。

POJO實質上可以理解為簡單的實體類,顧名思義POJO類的作用是方便程序員使用數據庫中的數據表,對於廣大的程序員,可以很方便的將POJO類當做對象來進行使用,當然也是可以方便的調用其get,set方法。POJO類也給我們在struts框架中的配置帶來了很大的方便。

一個POJO持久化以后就是PO

直接用它傳遞、傳遞過程中就是DTO
直接用來對應表示層就是VO

DAO: 數據訪問對象是第一個面向對象的數據庫接口,是一個數據訪問接口(Data Access Object)。它可以把POJO持久化為PO,用PO組裝出來VO、DTO。

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

1. 一個DAO工廠類;

2. 一個DAO接口;

3. 一個實現DAO接口的具體類;

4. 數據傳遞對象(有些時候叫做值對象).

具體的DAO類包含了從特定的數據源訪問數據的邏輯,一般一個DAO類和一張表對應,每個操作要和事務關聯。

阿里開發手冊關於應用分層的介紹

1.開放接口層: 可直接封裝 Service 方法暴露成 RPC 接口;通過 Web 封裝成 http 接口;進行 網關安全控制、流量控制等。
2.終端顯示層: 各個端的模板渲染並執行顯示的層。當前主要是 velocity 渲染,JS 渲染, JSP 渲染,移動端展示等。
3.Web 層: 主要是對訪問控制進行轉發,各類基本參數校驗,或者不復用的業務簡單處理等。
4.Service 層: 相對具體的業務邏輯服務層。
5.Manager 層: 通用業務處理層,它有如下特征:
A)對第三方平台封裝的層,預處理返回結果及轉化異常信息;
B)對 Service 層通用能力的下沉,如緩存方案、中間件通用處理;
C)與 DAO 層交互,對多個 DAO 的組合復用。
6.DAO 層: 數據訪問層,與底層 MySQL、Oracle、Hbase 等進行數據交互。
7.外部接口或第三方平台: 包括其它部門 RPC 開放接口,基礎平台,其它公司的 HTTP 接口

對於應用分層的各層次再次理解

1.Dao層、Dto層

DTO:數據傳輸對象,一般是把數據庫表封裝成對象,表的各個字段就是該對象的各個變量。

Dao:數據訪問對象,負責封裝對數據庫的CRUD操作,一般是mapper寫接口,xml文件寫sql語句的形式。

2.manager層、service層、biz層
前提: 如果是小應用,而且后續擴展的可能性不高,只需要Dao——service——controller的
manager層: 負責將Dao層中的數據庫操作組合復用,主要是一些緩存方案,中間件的處理,以及對第三方平台封裝的層。
service層: 更加關注業務邏輯,是業務處理層,將manager組合過的操作和業務邏輯組合在一起,再封裝成業務操作。
biz層 包含service層,service層注重基礎業務的處理,biz層是復雜應用層的業務層

3.controller層
主要負責接受前台的數據和請求,並且在底層處理完之后把結果返回回去,一般不能寫業務邏輯在這一層,因為第一造成了不可復用,第二以后的維護困難,第三這一層沒有上層,如果給用戶返回了奇怪的錯誤信息將會非常丑陋。


免責聲明!

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



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