SSH框架中service層的作用

2021-07-04 18:12:53 字數 1264 閱讀 5502

先直接copy乙份過來,慢慢消化。

說一下目前的理解:

首先,我搞清楚了層次架構的輪廓,spring框架,表示層呼叫控制層,控制層呼叫業務層,業務層呼叫資料訪問層。

service層的作用,目前明確的印象是,為了框架,為了解耦,框架必須的一層!具體原理其實並沒有理解,以後要多多回顧思考。

從字面的意思上來看,service是業務層,dao是資料訪問層。

記得剛學程式設計的時候,都是在service裡直接呼叫dao,service裡面就new乙個dao類物件,呼叫,其他有意義的事沒做,因為也不知道應該在裡面寫些什麼有意義的**,也不明白有這個有什麼用,甚至還覺得不要serivce層不更好,省點功夫,反正它不也就是copy了一次dao層然後改個名字而已麼……

我們都知道,標準主流現在的程式設計方式都是採用mvc綜合設計模式,mvc本身不屬於設計模式的一種,它描述的是一種結構,最終目的達到解耦,解耦說的意思是你更改某一層**,不會影響我其他層**,如果你會像spring這樣的框架,你會了解面向介面程式設計,表示層呼叫控制層,控制層呼叫業務層,業務層呼叫資料訪問層。初期也許都是new物件去呼叫下一層,比如你在業務層new乙個dao類的物件,呼叫dao類方法訪問資料庫,這樣寫是不對的,因為在業務層中是不應該含有具體物件,最多只能有引用,如果有具體物件存在,就耦合了。當那個物件不存在,我還要修改業務的**,這不符合邏輯。好比主機板上記憶體壞了,我換記憶體,沒必要連主機板一起換。我不用知道記憶體是哪家生產,不用知道多大容量,只要是記憶體都可以插上這個介面使用。這就是mvc的意義。

接下來說如果現在感覺不到service的存在意義,其實因為現在做東西分層次不是那麼嚴格,在乙個你們做東西業務本身也少,舉個最簡單的例子,你做乙個分頁的功能,資料1000條,你20條在乙個頁,你可以把這個功能寫成工具類封裝起來,然後在業務層裡呼叫這個封裝的方法,這才是業務裡真正幹得事,只要沒訪問資料庫的,都要在業務裡寫。

比說你現在用的是ssh框架,做乙個使用者模組:

1、假設現在你做這個功能會用到user表和許可權表,那麼你前台的頁面訪問action,action再去呼叫使用者模組service,使用者模組service判斷你是操作user表還是許可權表,如果你操作的是user表則service的實現類就去呼叫userdao。如果是操作的是許可權表則呼叫許可權的dao

2、也就是說dao一定是和資料庫的每張表一一對應,而service則不是。明白的沒?其實你乙個專案乙個service和乙個dao其實也一樣可以運算元據庫,只不過那要是表非常多,出問題了,那找起來多麻煩,而且太亂了

3、好處就是你的整個專案非常系統化,和資料庫的錶能一致,而且功能模組化,這樣以後維護或者改錯比較容易,效能也高一些

如何讓CI框架支援service層

本文主要介紹了在controller和model中加乙個業務層service,由它來負責業務邏輯,封裝好的呼叫介面可以被controller復用,提高了通用的業務邏輯的復用性,設計到具體業務實現會呼叫model的介面。大家知道codeigniter框架式mvc分層的,通常大家把業務邏輯寫到contr...

java中dao層和service層的區別是什麼?

首先解釋面上意思,service是業務層,dao是資料訪問層。呵呵,這個問題我曾經也有過,記得以前剛學程式設計的時候,都是在service裡直接呼叫dao,service裡面就new乙個dao類物件,呼叫,其他有意義的事沒做,也不明白有這個有什麼用,參加工作久了以後就會知道,業務才是工作中的重中之重...

dao層和service層中對應操作

進行 檢查的時候,被同事發現了乙個問題,dao層中不管是update,insert,delete還是select操作,統一用的是,但是我在使用的時候結果並沒有錯誤,但為了規範,在此做一下總結,貼出 留個教訓。1 select操作 service層中 selectone 查詢一條記錄 select 查...