springmvc分層領域模型概念詳解

2022-09-28 18:18:09 字數 2287 閱讀 9742

目錄

本文核心為分層領域模型(vo,po,bo,dao,pojo等)概念的個人理解。

(1)解決mvc架構中各層(比如檢視層+控制層+服務層+資料訪問層+資料庫)中各層資料互動時,傳遞什麼資料模型更加科學和合理。

(2)更好的降低mvc架構中各層間的耦合性,提高層內的內聚性,這樣更方便對軟體進行維護

(3)一定程度上的提高資訊的安全性,根據瀏覽器,可以知道檢視層和控制層傳輸的資料模型,但是很難準確定位其它各層傳輸的領域模型中的具體字段。

①vo(viewobject)

顯示層物件,通常是web向模板渲染引擎層傳輸的物件(阿里j**a開發手冊分層領域模型),對於乙個web頁面,用乙個vo物件對應整個介面的值。

②dto(datatransferobject)

資料傳輸物件,前後端分離開發模式中,前端與controller層資料交換,在j**a中作為資料傳輸,應該進行序列化。

③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 j**a object)。

⑥dodo現在主要有兩個版本:

乙個是阿里巴巴的開發手冊中的定義,do(data object)這個等同於上面的po.

另乙個是在ddd(domain-driven design)領域驅動設計中

do(domain object)這個等同於上面的bo

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

(1)vo(value object)

這貨就是lcwm**用來展示,就是介面(網頁,客戶端,app)展示時,從後台獲取的展示出的資料(在網頁中,vo主要以js裡面的物件存在)

(2)dto(data transfer object)

圖中,該類橫跨兩個層次,即有兩種存在形式:

①後端,dto是以j**a物件的形式,前端傳遞的資料(目前主流是json),由框架(主流的springboot)轉為dto形式

②前端:以js裡面的物件(也可以簡單理解成json),比如ajax請求中的資料體**

(3)主要區別

欄位不一樣,vo往往根據展示業務的不同,刪減一部分dto中的字段,因此也造就了值不一樣

比如dto資料為

展示業務一需要的資料(vo):

(1)bo 業務物件

bo應該說是乙個業務物件,對應著一類業務,一類業務(bo)可能會有很多業務操作,換言之,bo會有很多針對自身資料進行計算的方法。比如springmvc中的service層中有很多service類,每個類除了get和set方法(@aulcwm**towired自動注入),還定義了很多呼叫mapper(dao)的方法.

(2)為什麼圖中bo橫跨兩層

①現在很多持久層框架自身就提供了資料組合的功能。

②bo有可能是在業務層由業務來拼裝po而成

③也有可能是在資料庫訪問層由框架直接生成

④很多情況下為了追求查詢的效率,框架跳過po直接生成bo的情況非常普遍,po只是用來增刪改使用

(3)bo和dto的主要區別和聯絡

①bo是對內(比如dao等),dto是對外(比如前端)

②bo為了進行業務計算需要輔助資料,輔助資料可能來自dto。

③bo可以為上層提供的很多資料其中可能有dto某些業務不需要的,因此dto需要在bo的基礎上,只要自己www.cppcns.com需要的資料,然後對外提供。

④在這個關係上,通常不會有資料內容的變化,內容變化要麼在bo內部業務計算的時候完成,要麼在解釋vo的時候完成

(1)分層領域模型是偏理論,實際應用的時候,根據所使用的框架進行切合實際的修改和省略。

(2)如果第一次接觸,建議按照教條進行操作,以方便加深理解。

(3)不要教條主義的前提,也有熟悉和理解教條主義,才能結合實際進行操作。

分層領域模型VO DTO DO PO

vo view object 檢視物件,用於展示層,它的作用是把某個指定頁面 或元件 的所有資料封裝起來。dto data transfer object 資料傳輸物件,這個概念 於j2ee的設計模式,原來的目的是為了ejb的分布式應用提供粗粒度的資料實體,以減少分布式呼叫的次數,從而提高分布式呼叫...

分層領域模型規約與領域模型命名規約

一 分層領域模型規約 二 領域模型命名規約 1 資料物件 do,即為資料表名。3 展示物件 vo,一般為網頁名稱。4 pojo是do dto bo vo的統稱,禁止命名成 pojo。整個web 的流程中的過程是 非常簡單的乙個圖.最近在看 人月神話 這書還不錯,旁邊乙個賣保險的哥們看到這本書的名字,...

網路分層模型

目前存在的兩種網路分層模型 osi模型和tcp ip模型。osi模型一共分為七層,tcp ip模型和osi模型類似,但是只分為四層。osi的全程是open systems interconncection,即開放系統互聯,它由iso international organization for st...