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

星空秀


簡單一點,dao層只是訪問數據庫,業務邏輯跟它沒關係,它只會訪問數據庫讀取數據,不知道這些數據是什麼意思、做什麼用的;service層,就是操作業務邏輯,它調取dao層的數據,對數據按照業務邏輯進行解釋。

總結一下,就是dao層不能有業務邏輯,service層可以調取一個dao層或者多個dao來實現業務邏輯。如果dao層加了業務邏輯進去,可以不通過service層實現了業務邏輯,不僅拖累查詢效率,還讓dao層代碼難以複用,導致代碼臃腫。


二世阿博


要知道dao層和service層的區別,那麼我們得先從瞭解每個層開始,在來理解這兩個層的區別就簡單了。

Java後端分層

我們都知道題主問的問題,是web程序的分層思想會談到的內容。在web應用程序中所謂的分層都是按照mvc的思想做分層操作的,根據mvc的分層思想我們可以把後端代碼分為:dao---->service---->control---->view

這樣分層的作用就是為了讓代碼各施其職,各盡其用。簡單的理解就是代碼和代碼對於不同的地方有不同的作用,所以根據代碼的作用把他們按照mvc的思想分為以上四個層。

各個層之間相互協調工作

各層作用

那麼我們從上面的層分別來解釋各個層的作用:

  • dao層:

dao層就是用來做連接數據庫操作的代碼層,我們編寫的程序中數據是需要我們從數據庫中查詢出來然後在程序中做運算。那麼做數據庫操作的代碼會被分到dao層中,一般情況下dao層中會引用到對應表格的實體類,因為做數據庫操作是需要做查詢,那麼做查詢數據的保存方式一般是一張表格就一個實體類,然後實體類基本上作用就是用來在各個層之間做數據傳遞。

  • service層:

service層的就是用來做業務處理的。我們數據庫的表格之間是有關聯關係的,那麼我們的程序需要完成一個業務,也不是總是一張表解決問題的,這個時候完成這個業務功能是需要結合多個dao層中數據庫操作完成,業務邏輯比較複雜的業務模塊是需要做事務的管理的,否則對於數據庫來說會產生垃圾數據,以及一些誤操作導致的數據的不準確性,和不必要的操作造成的異常。從而違背了數據庫完整性要求。

  • control層:

control層的作用就是用來管理請求和業務處理之間的交互。一般情況就是用戶在頁面上操作對應的操作需要向服務器方式對應的請求,Control層就會接收對應的請求,根據對應的請求在調用對應的業務處理,在根據不同的業務處理調用對應的數據訪問,數據訪問把結果得到給到業務邏輯層,業務邏輯層在給到Control層,Control層在把對應的結果反饋給用戶。

  • view層:

view層的作用就是用來和用戶做交互操作的。也就是說view層就是我們所說的html前端頁面,展示數據給用戶,根據數據做對應的操作。

dao層和service層的區別

根據上面講解的內容可以看到dao層和service層的代碼的作用是完全不同的。作用功能不同,dao層只是為了做數據庫操作,service層主要是做整體的業務邏輯處理。在service層中是必須得調用dao層中的代碼來做相應的業務處理,所以他們兩個層是相互協助工作的。

這個圖片可以看到他們兩個的最直觀區別

總結:dao層和service層最大的區別就是作用功能的不同,但是他們之間也是相互協作而存在的,誰都不能少誰。

以上是答主的看法,希望大家能給個贊,如果有其他看法的可以在下方評論區留言,我會在第一時間回覆,或者點個關注我們一起探討探討


自學JAVA


dao層數據訪問層,service層業務邏輯層,MVC貧血模型就是service層直接調用dao層,DDD模式的話會多一層domain,可以簡單理解把service層的通用業務邏輯下層到domain,由service層調用domain層,再到數據層dao


小一鳴


service負責業務邏輯,dao負責數據訪問。

以註冊用戶這個功能為例,service層要負責檢查用戶名是否保留字,是否已使用,然後把信息寫入數據庫,再生成關聯信息比如權限等也寫入數據庫。

同時還要處理異常。這一串動作就是業務邏輯,service層要負責實現,但它不應該關心底層用的是mysql還是oracle,也不應該由它拼接SQL語句。

dao層的代碼則只與數據庫交互,比如service層要添加用戶記錄,它就執行insert語句,要檢查用戶是否已存在,它就執行select語句。

標準主流現在的編程方式都是採用MVC綜合設計模式,MVC本身不屬於設計模式的一種,它描述的是一種結構,最終目的達到解耦,解耦說的意思是你更改某一層代碼。

如果你會像spring這樣的框架,你會了解面向接口編程,表示層調用控制層,控制層調用業務層,業務層調用數據訪問層。初期也許都是new對象去調用下一層。


智慧網絡2333


java基礎的三層架構

web層寫servlet 與前端和service層交互

service層實現業務邏輯 調用dao層 返回web層

dao層只查數據庫 然後返回到service層

不知道我說的對不 請教各位大佬們


蘇蘇不會撞南牆


dao一般是直接對數據庫的增刪改查,給service提供服務,service一般是做業務邏輯處理,需要操作數據庫時調用dao的方法


aGentleman


dao層也叫數據訪問層,基礎操作,對於某個表的增刪改查。service層理解為一個或多個dao進行再次封裝成一個服務


分享到:


相關文章: