日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dao层如何调用对象_你的项目应该如何正确分层?

發布時間:2024/9/27 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dao层如何调用对象_你的项目应该如何正确分层? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

你好,歡迎收聽極客視點。

說起應用分層,大部分人都會認為這不是很簡單嘛,就Controller、Service、Mapper三層。但在“簡單”背后,很多人并沒有將各層級的職責劃分清楚。比如在很多代碼中,Controller比Service還多,Service被當成透傳了,這是開發代碼容易被忽略的地方。這樣往往造成層級關系混亂,后續代碼無法復用、維護困難。

此前,公眾號“咖啡拿鐵(ID:close_3092860495)”介紹了優化代碼分層的方法,供你參考。

如何進行分層

一個好的應用分層需要具備以下幾點:

  • 方便后續代碼進行維護擴展;
  • 分層的效果需要讓整個團隊都接受;
  • 各層的職責邊界清晰。

阿里巴巴的分層規范

在阿里的編碼規范中,對分層的要求如下:

1. 開放接口層:可直接封裝 Service 方法暴露成 RPC 接口;通過 Web 封裝成 http 接口;進行網關安全控制、流量控制等。

2. 終端顯示層:各個端的模板渲染并執行顯示的層。當前主要是 velocity 渲染、JS 渲染、JSP 渲染、移動端展示等。

3. Web 層:主要是對訪問控制進行轉發,各類基本參數校驗,或者不復用的業務簡單處理等。

4. Service 層:相對具體的業務邏輯服務層。

5. Manager 層:通用業務處理層,它有如下特征:一是對第三方平臺封裝的層,預處理返回結果及轉化異常信息;二是對Service層通用能力的下沉,如緩存方案、中間件通用處理;三是與DAO層交互,對多個DAO的組合復用。

6 .DAO 層:數據訪問層,與底層 MySQL、Oracle、Hbase 進行數據交互。

阿里巴巴規約中的分層比較清晰,簡單明了,但是描述得還是過于簡單了,很多人還是分不清楚Service層和Manager層之間的關系,導致很多項目中根本沒有Manager層的存在。下面介紹具體業務中應該如何實現分層。

優化分層

首先需要說明的是,如果RPC框架選用Thrift,可能會比其他的RPC框架多出一層,作用和Controller層類似:

最上層的Controller和TService是阿里分層規范中的第一層:輕業務邏輯、參數校驗、異常兜底。通常這種接口可以輕易更換接口類型,所以業務邏輯必須要輕,甚至不做具體邏輯。

其次是Service層,這是業務層,復用性較低,這里推薦每一個Controller方法都對應一個Service,不要把業務編排放在Controller中去做,否則以后你要接入Thrift,又需要把業務編排再做一次,這會導致你每接入一個入口層,代碼都得重新復制一份。如下圖所示:

這樣大量的重復工作必定會導致開發效率下降,所以你要把業務編排邏輯都放進Service層中。

然后是Mannager層,這是可復用邏輯層。這里的Mannager可以是單個服務,比如Cache、MQ等等;也可以是復合的,當你需要調用多個Mannager時,可以將它們合為一個Mannager,比如邏輯上的連表查詢等。如果是httpMannager或rpcMannager,還需要在這一層做一些數據轉換。

再來看DAO層,這是數據庫訪問層。主要負責“操作數據庫的某張表,映射到某個Java對象”,DAO應該只允許自己的Service訪問。

最后順便聊一聊分層領域模型的轉換,在阿里巴巴編碼規約中,列舉了下面幾個領域模型規約:

  • DO(Data Object):與數據庫表結構一一對應,通過DAO層向上傳輸數據源對象。
  • DTO(Data Transfer Object):數據傳輸對象,Service或Manager向外傳輸的對象。
  • BO(Business Object):業務對象,由Service層輸出的封裝業務邏輯的對象。
  • AO(Application Object):應用對象,在Web層與Service層之間抽象的復用對象模型,極為貼近展示層,復用度不高。
  • VO(View Object):顯示層對象,通常是Web向模板渲染引擎層傳輸的對象。
  • Query:數據查詢對象,各層接收上層的查詢請求。注意超過2個參數的查詢封裝,禁止使用Map類來傳輸。

每一個層基本都有自己對應的領域模型,而有些人過于追求每一層都用自己的領域模型,這就導致在一次請求中,出現多次對象轉換。

一個折中的方案是:

  • 允許Service/Manager可以操作數據領域模型。
  • Controller/TService層的領域模型不允許傳入DAO層,這樣就不符合職責劃分了。
  • 同理,不允許DAO層的數據傳入到Controller/TService。

總結

業務分層對于代碼規范是比較重要的,決定后續代碼是否可復用,是否職責清晰、邊界清晰。

以上就是今天的內容,如果你的團隊有更好的分層方法,歡迎留言分享。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的dao层如何调用对象_你的项目应该如何正确分层?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 床戏高潮呻吟声片段 | 99热这里只有精品在线观看 | 中国女人特级毛片 | 中文字幕欧美激情 | 成年人免费在线 | 极品另类| 久久久国产成人一区二区三区 | 在线免费观看福利 | 69精品久久久久久久 | 簧片av| 在线观看黄色动漫 | 不卡视频一区二区 | 五月天一区二区 | 欧美日本韩国一区二区 | 午夜免费在线 | 男生尿隔着内裤呲出来视频 | 木下凛凛子av一区二区三区 | 久久丫精品忘忧草西安产品 | 欧美成一区二区三区 | jlzzjlzz国产精品久久 | 成人免费在线网站 | av导航福利| 高清免费毛片 | 网站在线免费观看 | 中文字幕激情小说 | 精品少妇一区二区三区免费观 | 亚洲伦理在线观看 | 全黄一级片 | 久久久久久久久国产精品一区 | 九一亚洲精品 | 伊人www22综合色 | 国产黄色免费大片 | 国产成人高清视频 | 亚洲国产精品狼友在线观看 | 免费的毛片网站 | 91亚洲精选 | 男人的天堂网av | 香蕉视频亚洲一级 | 在线观看黄网 | 亚洲xxxx18 | 成人天堂 | 国产精品日韩欧美大师 | 成人精品视频 | 一区二区三区国产精品 | 牛牛电影国产一区二区 | www久久99| 亚洲欧美日韩在线不卡 | 欧美在线视频一区二区三区 | 日韩一级片网站 | 成色网| 日本少妇在线观看 | 草逼免费视频 | 亚洲色在线视频 | 国产女主播福利 | 中文字幕在线亚洲 | 国产亚洲天堂 | 人人插人人澡 | 国产在线美女 | 久久精品国产成人av | 亚洲国产日韩一区二区 | 一级片一区二区三区 | 99国产精品久久久久久久成人热 | 色欲亚洲Av无码精品天堂 | 日韩视频在线观看一区二区 | 香蕉91视频 | 日韩国产第一页 | 九一精品一区 | 国产18禁黄网站免费观看 | 国产乱人伦精品一区二区 | 久久在线中文字幕 | 99久久精品国产成人一区二区 | 欧美性tv | 神马久久久久久 | 国产一在线 | 国产福利精品视频 | 日韩精品无码一区二区三区 | 国产精品99久 | 中国久久| www.youjizz.com在线| 自拍偷拍激情小说 | 91亚洲国产精品 | 三级视频国产 | 亚洲欧洲一区二区三区 | 狂野欧美性猛交免费视频 | 人妻一区二区三区视频 | 91精品国产综合久久久蜜臀九色 | 国产老女人乱淫免费可以 | 嫩草影院懂你的 | 福利91| 午夜资源站 | 国产午夜精品一区二区三区四区 | 91成人短视频在线观看 | 男人天堂亚洲天堂 | 另类少妇人与禽zozz0性伦 | 一级高清毛片 | 欧美人妻少妇一区二区三区 | 国产无码精品视频 | 视频一区 中文字幕 | 猛1被调教成公厕尿便失禁网站 |