先看後贊,養成習慣。點讚收藏,人生輝煌。
說實話,學了挺久的mvc架構了,到現在也一直沒整明白service層和dao層是幹什麼用的,哪怕我目前已經學到了spring boot,但回過頭來看這些基礎知識,依然是不明就裡。
感覺service層並沒有做什麼實際的工作,只是接受了servlet,同時又呼叫了dao。它本身並沒有什麼實際意義的**,感覺並沒有什麼用處,那為什麼還寫?這不是增加**量嗎?
還有dao層是做什麼的?為什麼用service層來呼叫dao層?
先簡單來講下dao層,和service層的概念:
service是業務層,dao是資料訪問層,這樣的分層是基於mvc架構來說的。
dao層:全稱為data access object,屬於一種bai比較底層,比較基礎的操作,具體到對於某個表、某個實體的增刪改查
service層:被稱為服務,肯定是相比之下比較高層次的一層結構,相當於將幾種操作封裝起來。
具體起來,dao的作用是封裝對資料庫的訪問:增刪改查,不涉及業務邏輯,只是達到按某個條件獲得指定資料的要求;
而service,則是專注業務邏輯,對於其中需要的資料庫操作,都通過dao去實現。
簡單來說就是dao層是底層,具體到某一張表的增刪查改,可以理解為有多少張表就有多少個dao層,而service成可以理解為是dao層的 「上司」,通過service層來控制dao層。
乙個service層控制乙個或者多個dao層。
舉個栗子:service層好比是老大,手下跟著一大幫小弟 (dao層), 老大不用親自出馬,有事情吩咐小弟去幹就行,老大只管下命令,小弟只管做事跑腿。
而為什麼我們要通過service層去呼叫dao層,這樣做的最大好處就是:
解耦。說的通俗點就是降低**之間的耦合,盡量讓**之間不要有太大的聯絡。
好比主機板上記憶體壞了,我換記憶體就行,沒必要連主機板一起換。我不用知道記憶體是哪家生產,不用知道多大容量,只要是記憶體就都可以插上這個介面使用。
這樣當某部分**出錯或者需要修改時,其他**就不需要修改或者變更,好處就在這裡。
而 dao 層,只負責接收最終的 sql 語句,具體到某一張表的增刪查改。
再用上面的老大和小弟的例子,小弟 (dao層) 腦子一般不太靈光,不具備什麼決策能力。能當上老大腦瓜都比較好使,命令由老大去下達,累活髒活交給小弟去幹 (增刪查改),底下一大幫子小弟聽老大指揮,老大叫誰幹什麼就幹什麼。最後完成老大布置的任務。
service層也不是就非有不可,對於極小的專案而言,加了service層,反而增加了**量,而且dao層種以及預見了可能出現的情況,並進行了相應的擴充套件。那麼,此時就不需要了。
雖然小弟腦子可能不太好使,但是有些事,你沒腦子都能完成,這時就不需要老大出馬了,不然一點屁大點的事都要麻煩老大,老大也太掉價了。
但是存在即合理,存在service層肯定有其原因,通過service層去呼叫dao層,不僅可以解耦合,而且可以增加**的拓展性。
白嫖不好,創作不易。各位的點讚就是我創作的最大動力,我們下篇文章見!老鐵,如果有收穫,請點個免費的贊鼓勵一下博主
dao層 service層 事務的理解
dao層 對應資料最底層操作,一般來說,乙個資料庫table對應乙個dao,單錶操作。service層 把客戶多方面要求進行彙總,對外只有引數即可,至於服務層操作多少個dao與客戶無關。事務四大特性 1.原子性 原子性是指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。2.一致性...
dao層和service層中對應操作
進行 檢查的時候,被同事發現了乙個問題,dao層中不管是update,insert,delete還是select操作,統一用的是,但是我在使用的時候結果並沒有錯誤,但為了規範,在此做一下總結,貼出 留個教訓。1 select操作 service層中 selectone 查詢一條記錄 select 查...
java中dao層和service層的區別是什麼?
首先解釋面上意思,service是業務層,dao是資料訪問層。呵呵,這個問題我曾經也有過,記得以前剛學程式設計的時候,都是在service裡直接呼叫dao,service裡面就new乙個dao類物件,呼叫,其他有意義的事沒做,也不明白有這個有什麼用,參加工作久了以後就會知道,業務才是工作中的重中之重...