-
1 # 成都碼佬
-
2 # 阿牛01
dao層也叫資料訪問層,基礎操作,對於某個表的增刪改查。service層理解為一個或多個dao進行再次封裝成一個服務
-
3 # 智慧網路2333
service負責業務邏輯,dao負責資料訪問。
以註冊使用者這個功能為例,service層要負責檢查使用者名稱是否保留字,是否已使用,然後把資訊寫入資料庫,再生成關聯資訊比如許可權等也寫入資料庫。
同時還要處理異常。這一串動作就是業務邏輯,service層要負責實現,但它不應該關心底層用的是mysql還是oracle,也不應該由它拼接SQL語句。
dao層的程式碼則只與資料庫互動,比如service層要新增使用者記錄,它就執行insert語句,要檢查使用者是否已存在,它就執行select語句。
標準主流現在的程式設計方式都是採用MVC綜合設計模式,MVC本身不屬於設計模式的一種,它描述的是一種結構,最終目的達到解耦,解耦說的意思是你更改某一層程式碼。
如果你會像spring這樣的框架,你會了解面向介面程式設計,表示層呼叫控制層,控制層呼叫業務層,業務層呼叫資料訪問層。初期也許都是new物件去呼叫下一層。
-
4 # 二世阿博
簡單一點,dao層只是訪問資料庫,業務邏輯跟它沒關係,它只會訪問資料庫讀取資料,不知道這些資料是什麼意思、做什麼用的;service層,就是操作業務邏輯,它調取dao層的資料,對資料按照業務邏輯進行解釋。
總結一下,就是dao層不能有業務邏輯,service層可以調取一個dao層或者多個dao來實現業務邏輯。如果dao層加了業務邏輯進去,可以不透過service層實現了業務邏輯,不僅拖累查詢效率,還讓dao層程式碼難以複用,導致程式碼臃腫。
-
5 # 自學JAVA
要知道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層最大的區別就是作用功能的不同,但是他們之間也是相互協作而存在的,誰都不能少誰。
-
6 # 蘇蘇不會撞南牆
java基礎的三層架構
web層寫servlet 與前端和service層互動
service層實現業務邏輯 呼叫dao層 返回web層
dao層只查資料庫 然後返回到service層
不知道我說的對不 請教各位大佬們
-
7 # 小一鳴
dao層資料訪問層,service層業務邏輯層,MVC貧血模型就是service層直接呼叫dao層,DDD模式的話會多一層domain,可以簡單理解把service層的通用業務邏輯下層到domain,由service層呼叫domain層,再到資料層dao
-
8 # 冒泡的肥皂
dao對資料庫進行操作的
service邏輯處理的,主要涉及到事務(你也可以在dao裡面把整個邏輯,事務處理了)
只是程式碼邏輯清晰點,每個層次幹不同的事
回覆列表
dao一般是直接對資料庫的增刪改查,給service提供服務,service一般是做業務邏輯處理,需要操作資料庫時呼叫dao的方法