中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springmvc分層領域模型的示例分析

發布時間:2021-08-23 12:36:32 來源:億速云 閱讀:400 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關springmvc分層領域模型的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1.為什么出現分層領域模型這個東西?

(1)解決MVC架構中各層(比如視圖層+控制層+服務層+數據訪問層+數據庫)中各層數據交互時,傳遞什么數據模型更加科學和合理。
(2)更好的降低MVC架構中各層間的耦合性提高層內的內聚性,這樣更方便對軟件進行維護
(3)一定程度上的提高信息的安全性,根據瀏覽器,可以知道視圖層和控制層傳輸的數據模型,但是很難準確定位其它各層傳輸的領域模型中的具體字段。

2.分層領域模型有哪些?

①VO(ViewObject)
顯示層對象,通常是Web向模板渲染引擎層傳輸的對象(阿里Java開發手冊分層領域模型),對于一個WEB頁面,用一個VO對象對應整個界面的值。
②DTO(DataTransferObject)
數據傳輸對象,前后端分離開發模式中,前端與controller層數據交換,在java中作為數據傳輸,應該進行序列化
③BO(Business Object)
業務對象,主要作用是把業務邏輯封裝成一個對象。這個對象可以包括一個或多個其它的對象,用來處理業務邏輯。有時候做開發時,當controller層調用Service層服務接口時,把DTO領域模型或者其它數據模型轉換為BO模型**,作為參數傳遞給Service接口
④DAO(Data Access Object )
數據訪問層對象,主要用來封裝對數據庫的訪問,它是一個面向對象的數據庫接口,負責持久層的操作,為業務層提供接口,主要用來封裝對數據庫的訪問,常見操作無外乎 CURD。在Mybatis中對應的是Mapper
⑤PO(Persistant Object)
持久對象,簡單說PO就是數據庫中的記錄,一個PO的數據結構對應著庫中表的結構,表中的一條記錄就是一個PO對象
通常PO里面除了get,set之外沒有別的方法
對于PO來說,數量是相對固定的,一定不會超過數據庫表的數量
等同于Entity,Entity基本等于POJO(Plain Ordinary Java Object)
⑥DO
DO現在主要有兩個版本:
一個是阿里巴巴的開發手冊中的定義, DO(Data Object)這個等同于上面的PO.
另一個是在DDD(Domain-Driven Design)領域驅動設計中
DO(Domain Object)這個等同于上面的BO

3.分層領域模型的簡單理解

有圖有真相,別的慢扯,先上圖

springmvc分層領域模型的示例分析

3.1 VO和DTO的區別

(1)VO(Value Object)
這貨就是用來展示,就是界面(網頁,客戶端,APP)展示時,從后臺獲取的展示出的數據(在網頁中,VO主要以js里面的對象存在
(2)DTO(Data Transfer Object)
圖中,該類橫跨兩個層次,即有兩種存在形式:
①后端,DTO是以java對象的形式,前端傳遞的數據(目前主流是json),由框架(主流的springboot)轉為DTO形式
②前端:以js里面的對象(也可以簡單理解成json),比如
ajax請求中的數據體**
(3)主要區別
字段不一樣,VO往往根據展示業務的不同,刪減一部分DTO中的字段,因此也造就了值不一樣
比如DTO數據為

{
“name”:“kun”
“age”:100
}

展示業務一需要的數據(VO):

{
“age”:100
}

3.2BO和DTO的區別

(1)BO 業務對象
BO應該說是一個業務對象,對應著一類業務,一類業務(BO)可能會有很多業務操作,換言之,BO會有很多針對自身數據進行計算的方法。比如springMVC中的service層中有很多service類,每個類除了get和set方法(@Autowired自動注入),還定義了很多調用Mapper(DAO)的方法.
(2)為什么圖中BO橫跨兩層
①現在很多持久層框架自身就提供了數據組合的功能。
②BO有可能是在業務層由業務來拼裝PO而成
③也有可能是在數據庫訪問層由框架直接生成
④很多情況下為了追求查詢的效率,框架跳過PO直接生成BO的情況非常普遍,PO只是用來增刪改使用
(3)BO和DTO的主要區別和聯系
BO是對內(比如DAO等),DTO是對外(比如前端)
BO為了進行業務計算需要輔助數據,輔助數據可能來自DTO。
③BO可以為上層提供的很多數據,其中可能有DTO某些業務不需要的,因此DTO需要在BO的基礎上,只要自己需要的數據,然后對外提供
④在這個關系上,通常不會有數據內容的變化,內容變化要么在BO內部業務計算的時候完成,要么在解釋VO的時候完成

4.總結

(1)分層領域模型是偏理論,實際應用的時候,根據所使用的框架進行切合實際的修改和省略。
(2)如果第一次接觸,建議按照教條進行操作,以方便加深理解。
(3)不要教條主義的前提,也有熟悉和理解教條主義,才能結合實際進行操作。

關于“springmvc分層領域模型的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安宁市| 贵德县| 大竹县| 渝北区| 金山区| 施甸县| 民丰县| 肃北| 漠河县| 高要市| 信宜市| 札达县| 会东县| 鱼台县| 咸阳市| 灵宝市| 浑源县| 托里县| 卫辉市| 清徐县| 华宁县| 呼伦贝尔市| 阳原县| 汝阳县| 高陵县| 察哈| 烟台市| 兴业县| 托克逊县| 威海市| 平远县| 瑞丽市| 长武县| 正宁县| 长子县| 齐齐哈尔市| 北碚区| 鹤峰县| 饶河县| 黎城县| 丰原市|