最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springmvc 中dao層和service層的區(qū)別說(shuō)明

 更新時(shí)間:2021年08月12日 17:03:20   作者:BusyMonkey  
這篇文章主要介紹了springmvc 中dao層和service層的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springmvc dao層和service層的區(qū)別

首先解釋面上意思,service是業(yè)務(wù)層,dao是數(shù)據(jù)訪問(wèn)層

這個(gè)問(wèn)題我曾經(jīng)也有過(guò),記得以前剛學(xué)編程的時(shí)候,都是在service里直接調(diào)用dao,service里面就new一個(gè)dao類(lèi)對(duì)象,調(diào)用,其他有意義的事沒(méi)做,也不明白有這個(gè)有什么用,參加工作久了以后就會(huì)知道,業(yè)務(wù)才是工作中的重中之重。

我們都知道,標(biāo)準(zhǔn)主流現(xiàn)在的編程方式都是采用MVC綜合設(shè)計(jì)模式,MVC本身不屬于設(shè)計(jì)模式的一種,它描述的是一種結(jié)構(gòu),最終目的達(dá)到解耦,解耦說(shuō)的意思是你更改某一層代碼,不會(huì)影響我其他層代碼,如果你會(huì)像spring這樣的框架,你會(huì)了解面向接口編程,表示層調(diào)用控制層,控制層調(diào)用業(yè)務(wù)層,業(yè)務(wù)層調(diào)用數(shù)據(jù)訪問(wèn)層。

初期也許都是new對(duì)象去調(diào)用下一層,比如你在業(yè)務(wù)層new一個(gè)DAO類(lèi)的對(duì)象,調(diào)用DAO類(lèi)方法訪問(wèn)數(shù)據(jù)庫(kù),這樣寫(xiě)是不對(duì)的,因?yàn)樵跇I(yè)務(wù)層中是不應(yīng)該含有具體對(duì)象,最多只能有引用,如果有具體對(duì)象存在,就耦合了。當(dāng)那個(gè)對(duì)象不存在,我還要修改業(yè)務(wù)的代碼,這不符合邏輯。

好比主板上內(nèi)存壞了,我換內(nèi)存,沒(méi)必要連主板一起換。我不用知道內(nèi)存是哪家生產(chǎn),不用知道多大容量,只要是內(nèi)存都可以插上這個(gè)接口使用。這就是MVC的意義。

接下來(lái)說(shuō)你感覺(jué)service的意義,其實(shí)因?yàn)槟悻F(xiàn)在做東西分層次不是那么嚴(yán)格,在一個(gè)你們做東西業(yè)務(wù)本身也少,舉個(gè)最簡(jiǎn)單的例子,你做一個(gè)分頁(yè)的功能,數(shù)據(jù)1000條,你20條在一個(gè)頁(yè),你可以把這個(gè)功能寫(xiě)成工具類(lèi)封裝起來(lái),然后在業(yè)務(wù)層里調(diào)用這個(gè)封裝的方法,這才是業(yè)務(wù)里真正干得事,只要沒(méi)訪問(wèn)數(shù)據(jù)庫(kù)的,都要在業(yè)務(wù)里寫(xiě)。

DAO層、Service層、Controller層和View層詳解

DAO層

DAO層主要是做數(shù)據(jù)持久層的工作,負(fù)責(zé)與數(shù)據(jù)庫(kù)進(jìn)行聯(lián)絡(luò)的一些任務(wù)都封裝在此,DAO層的設(shè)計(jì)首先是設(shè)計(jì)DAO的接口,然后在Spring的配置文件中定義此接口的實(shí)現(xiàn)類(lèi),然后就可在模塊中調(diào)用此接口來(lái)進(jìn)行數(shù)據(jù)業(yè)務(wù)的處理,而不用關(guān)心此接口的具體實(shí)現(xiàn)類(lèi)是哪個(gè)類(lèi),顯得結(jié)構(gòu)非常清晰,DAO層的數(shù)據(jù)源配置,以及有關(guān)數(shù)據(jù)庫(kù)連接的參數(shù)都在Spring的配置文件中進(jìn)行配置。

Service層

Service層主要負(fù)責(zé)業(yè)務(wù)模塊的邏輯應(yīng)用設(shè)計(jì)。同樣是首先設(shè)計(jì)接口,再設(shè)計(jì)其實(shí)現(xiàn)的類(lèi),接著再Spring的配置文件中配置其實(shí)現(xiàn)的關(guān)聯(lián)。這樣我們就可以在應(yīng)用中調(diào)用Service接口來(lái)進(jìn)行業(yè)務(wù)處理。Service層的業(yè)務(wù)實(shí)現(xiàn),具體要調(diào)用到已定義的DAO層的接口,封裝Service層的業(yè)務(wù)邏輯有利于通用的業(yè)務(wù)邏輯的獨(dú)立性和重復(fù)利用性,程序顯得非常簡(jiǎn)潔。

Controller層

Controller層負(fù)責(zé)具體的業(yè)務(wù)模塊流程的控制,在此層里面要調(diào)用Serice層的接口來(lái)控制業(yè)務(wù)流程,控制的配置也同樣是在Spring的配置文件里面進(jìn)行,針對(duì)具體的業(yè)務(wù)流程,會(huì)有不同的控制器,我們具體的設(shè)計(jì)過(guò)程中可以將流程進(jìn)行抽象歸納,設(shè)計(jì)出可以重復(fù)利用的子單元流程模塊,這樣不僅使程序結(jié)構(gòu)變得清晰,也大大減少了代碼量。

View層

此層與控制層結(jié)合比較緊密,需要二者結(jié)合起來(lái)協(xié)同工發(fā)。View層主要負(fù)責(zé)前臺(tái)jsp頁(yè)面的表示

DAO層

Service層這兩個(gè)層次都可以單獨(dú)開(kāi)發(fā),互相的耦合度很低,完全可以獨(dú)立進(jìn)行,這樣的一種模式在開(kāi)發(fā)大項(xiàng)目的過(guò)程中尤其有優(yōu)勢(shì),Controller,View層因?yàn)轳詈隙缺容^高,因而要結(jié)合在一起開(kāi)發(fā),但是也可以看作一個(gè)整體獨(dú)立于前兩個(gè)層進(jìn)行開(kāi)發(fā)。這樣,在層與層之前我們只需要知道接口的定義,調(diào)用接口即可完成所需要的邏輯單元應(yīng)用,一切顯得非常清晰簡(jiǎn)單。 DAO設(shè)計(jì)的總體規(guī)劃需要和設(shè)計(jì)的表,和實(shí)現(xiàn)類(lèi)之間一一對(duì)應(yīng)。

DAO層所定義的接口里的方法都大同小異,這是由我們?cè)贒AO層對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的操作來(lái)決定的,對(duì)數(shù)據(jù)庫(kù)的操作,我們基本要用到的就是新增,更新,刪除,查詢(xún)等方法。因而DAO層里面基本上都應(yīng)該要涵蓋這些方法對(duì)應(yīng)的操作。除此之外,可以定義一些自定義的特殊的對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的方法。

Service邏輯層設(shè)計(jì)

Service層是建立在DAO層之上的,建立了DAO層后才可以建立Service層,而Service層又是在Controller層之下的,因而Service層應(yīng)該既調(diào)用DAO層的接口,又要提供接口給Controller層的類(lèi)來(lái)進(jìn)行調(diào)用,它剛好處于一個(gè)中間層的位置。每個(gè)模型都有一個(gè)Service接口,每個(gè)接口分別封裝各自的業(yè)務(wù)處理方法。

在DAO層定義的一些方法,在Service層并沒(méi)有使用,那為什么還要在DAO層進(jìn)行定義呢?這是由我們定義的需求邏輯所決定的。

DAO層的操作 經(jīng)過(guò)抽象后基本上都是通用的,因而我們?cè)诙xDAO層的時(shí)候可以將相關(guān)的方法定義完畢,這樣的好處是在對(duì)Service進(jìn)行擴(kuò)展的時(shí)候不需要再對(duì)DAO層進(jìn)行修改,提高了程序的可擴(kuò)展性。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Maven配置文件修改及導(dǎo)入第三方j(luò)ar包的實(shí)現(xiàn)

    Maven配置文件修改及導(dǎo)入第三方j(luò)ar包的實(shí)現(xiàn)

    本文主要介紹了Maven配置文件修改及導(dǎo)入第三方j(luò)ar包的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Java多線程鎖機(jī)制相關(guān)原理實(shí)例解析

    Java多線程鎖機(jī)制相關(guān)原理實(shí)例解析

    這篇文章主要介紹了Java多線程鎖機(jī)制相關(guān)原理實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • java 正則,object中兩個(gè)方法的使用(詳解)

    java 正則,object中兩個(gè)方法的使用(詳解)

    下面小編就為大家?guī)?lái)一篇java 正則,object中兩個(gè)方法的使用(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Java集合中的Set之LinkedHashSet詳解

    Java集合中的Set之LinkedHashSet詳解

    這篇文章主要介紹了Java集合中的Set之LinkedHashSet詳解,LinkedHashSet是Set集合的一個(gè)實(shí)現(xiàn),具有set集合不重復(fù)的特點(diǎn),同時(shí)具有可預(yù)測(cè)的迭代順序,也就是我們插入的順序,并且linkedHashSet是一個(gè)非線程安全的集合,需要的朋友可以參考下
    2023-09-09
  • SpringBoot?模板模式實(shí)現(xiàn)優(yōu)惠券邏輯的示例代碼

    SpringBoot?模板模式實(shí)現(xiàn)優(yōu)惠券邏輯的示例代碼

    這篇文章主要介紹了SpringBoot?模板模式實(shí)現(xiàn)優(yōu)惠券邏輯,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Java代碼為例講解堆的性質(zhì)和基本操作以及排序方法

    Java代碼為例講解堆的性質(zhì)和基本操作以及排序方法

    堆數(shù)據(jù)結(jié)構(gòu)可以看作一顆完全二叉樹(shù),因而又被成為二叉堆,這里我們以Java代碼為例講解堆的性質(zhì)和基本操作以及排序方法,需要的朋友可以參考下
    2016-06-06
  • SpringBoot密碼加密的實(shí)現(xiàn)示例

    SpringBoot密碼加密的實(shí)現(xiàn)示例

    本文主要介紹了SpringBoot密碼加密的實(shí)現(xiàn)示例,包括引入依賴(lài)、配置加密工具、生成加密密鑰、加密密碼、配置解密,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • spring boot 常見(jiàn)http請(qǐng)求url參數(shù)獲取方法

    spring boot 常見(jiàn)http請(qǐng)求url參數(shù)獲取方法

    這篇文章主要介紹了spring boot 常見(jiàn)http請(qǐng)求url參數(shù)獲取,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 基于SpringBoot實(shí)現(xiàn)圖片防盜鏈的兩種方式

    基于SpringBoot實(shí)現(xiàn)圖片防盜鏈的兩種方式

    出于安全和性能的考慮,我們希望服務(wù)器返回的圖片資源僅在指定網(wǎng)站內(nèi)展示,防止爬蟲(chóng)或其它站點(diǎn)直接引用圖片地址進(jìn)行下載或展示,進(jìn)而消耗服務(wù)器資源,所以本文給大家介紹了基于SpringBoot實(shí)現(xiàn)圖片防盜鏈的兩種方式,需要的朋友可以參考下
    2025-02-02
  • Java實(shí)現(xiàn)英文猜詞游戲的示例代碼

    Java實(shí)現(xiàn)英文猜詞游戲的示例代碼

    這篇文章主要介紹了如何用Java編寫(xiě)一個(gè)英文猜詞游戲,可以用來(lái)背英語(yǔ)單詞。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-02-02

最新評(píng)論

隆德县| 佛山市| 手游| 古交市| 阿拉善左旗| 漠河县| 武义县| 滁州市| 娄烦县| 修文县| 安阳县| 乐昌市| 延吉市| 利津县| 甘孜| 万全县| 金沙县| 招远市| 伊宁市| 高陵县| 南平市| 洮南市| 丰宁| 祁连县| 祁东县| 江山市| 保山市| 柳林县| 宁陵县| 石家庄市| 九龙坡区| 满城县| 南城县| 牟定县| 葵青区| 东海县| 德令哈市| 太仆寺旗| 栖霞市| 五莲县| 喀什市|