非原創(chuàng),看了許多篇博客的總結(jié)
一般的項(xiàng)目模塊中都有DAO、Entity、Service、Controller層。
Entity層:實(shí)體層 數(shù)據(jù)庫在項(xiàng)目中的類
Entity層是實(shí)體層,也就是所謂的model,也稱為pojo層,是數(shù)據(jù)庫在項(xiàng)目中的類,該文件包含實(shí)體類的屬性和對應(yīng)屬性的set、get方法;
DAO層: 持久層 主要與數(shù)據(jù)庫進(jìn)行交互
DAO層=mapper層,現(xiàn)在用Mybatis逆向工程生成的mapper層,其實(shí)就是dao層。DAO層會調(diào)用entity層,DAO中會定義實(shí)際使用到的方法,比如增刪改查。DAO 層的數(shù)據(jù)源和數(shù)據(jù)庫連接的參數(shù)都是在配置文件中進(jìn)行配置的,配置文件一般在同層的XML文件夾中。數(shù)據(jù)持久化操作就是指,把數(shù)據(jù)放到持久化的介質(zhì)中,同時(shí)提供增刪改查操作。
Service層:業(yè)務(wù)層 控制業(yè)務(wù)
Service層主要負(fù)責(zé)業(yè)務(wù)模塊的邏輯應(yīng)用設(shè)計(jì)。先設(shè)計(jì)放接口的類,再創(chuàng)建實(shí)現(xiàn)的類,然后在配置文件中進(jìn)行配置其實(shí)現(xiàn)的關(guān)聯(lián)。service層調(diào)用dao層接口,接收dao層返回的數(shù)據(jù),完成項(xiàng)目的基本功能設(shè)計(jì)。
封裝Service層的業(yè)務(wù)邏輯有利于業(yè)務(wù)邏輯的獨(dú)立性和重復(fù)利用性。
Controller層:控制層 控制業(yè)務(wù)邏輯
Controller層負(fù)責(zé)具體的業(yè)務(wù)模塊流程的控制,controller層負(fù)責(zé)前后端交互,接受前端請求,調(diào)用service層,接收service層返回的數(shù)據(jù),最后返回具體的頁面和數(shù)據(jù)到客戶端。
Controller層像是一個服務(wù)員,他把客人(前端)點(diǎn)的菜(數(shù)據(jù)、請求的類型等)進(jìn)行匯總什么口味、咸淡、量的多少,交給廚師長(Service層),廚師長則告訴沾板廚師(Dao 1)、湯料房(Dao 2)、配菜廚師(Dao 3)等(統(tǒng)稱Dao層)我需要什么樣的半成品,副廚們(Dao層)就負(fù)責(zé)完成廚師長(Service)交代的任務(wù)。
總結(jié):
業(yè)務(wù)邏輯:
Controller-->service接口-->serviceImpl-->dao接口-->daoImpl-->mapper-->db
在具體的項(xiàng)目中,其流程為:Controller層調(diào)用Service層的方法,Service層調(diào)用Dao層中的方法,其中調(diào)用的參數(shù)是使用Entity層進(jìn)行傳遞的??偟膩碚f這樣每層做什么的分類只是為了使業(yè)務(wù)邏輯更加清晰,寫代碼更加方便,所以有時(shí)候也需要根據(jù)具體情況來,但是大體的都是這樣處理的,因?yàn)樗鋵?shí)就是提供一種規(guī)則,讓你把相同類型的代碼放在一起,這樣就形成了層次,從而達(dá)到分層解耦、復(fù)用、便于測試和維護(hù)的目的。