1. 程式人生 > 其它 >Dao、Controller、Service三層的結構劃分

Dao、Controller、Service三層的結構劃分


Java Web基礎——Controller+Service +Dao三層的功能劃分(摘取自網路)

1. Controller/Service/DAO簡介:

Controller是管理業務(Service)排程和管理跳轉的。

Service是管理具體的功能的。

Controller只負責管理,而Service負責實施。

DAO只完成增刪改查,雖然可以1-n,n-n,1-1關聯,模糊、動態、子查詢都可以。但是無論多麼複雜的查詢,dao只是封裝增刪改查。至於增刪查改如何去實現一個功能,dao是不管的。

總結這三者,通過例子來解釋:

Controller像是服務員,顧客點什麼菜,菜上給幾號桌,都是ta的職責;

Service是廚師,action送來的選單上的菜全是ta做的;

Dao是廚房的小工,和原材料打交道的事情全是ta管。

相互關係是,小工(dao)的工作是要滿足廚師(service)的要求,廚師要滿足服務員(controller)轉達的客戶(view)的要求,服務員自然就是為客戶服務嘍。

現在最基本的分層方式,結合了SSH架構。Entity層就是對應的資料庫表的實體類。Dao層是使用了Hibernate連線資料庫、操作資料庫(增刪改查)。Service層:引用對應的Dao資料庫操作。Controller層:引用對應的Service層,結合SpringMVC註釋,跳轉到指定的頁面,當然也能接受頁面傳遞的請求資料,也可以做些計算處理。

以上的Hibernate, SpringMVC,都需要注入到Spring的配置檔案中,Spring把這些聯絡起來,成為一個整體。



2. 三大框架SpringMVC/Hibernate/Spring

簡單地說:

SpringMVC——控制用的;

Hibernate——操作資料庫的;

Spring——解耦用的。

詳細地說:

SpringMVC在SSH框架中起控制的作用,其核心是Controller,主要控制邏輯關係的處理。

Hibernate是資料持久化層,是一種新的物件、關係的對映工具,提供了從Java類到資料表的對映,也提供了資料查詢和恢復等機制,大大減少資料訪問的複雜度。把對資料庫的直接操作,轉換為對持久物件的操作。

Spring是一個輕量級的控制反轉(IoC)和麵向切面(AOP)的容器框架。面向介面的程式設計,由容器控制程式之間的依賴關係,而非傳統實現中,由程式程式碼直接操控。這就是所謂“控制反轉”的概念所在:(依賴)控制權由應用程式碼中轉到了外部容器,控制權的轉移,是所謂反轉。依賴注入,即元件之間的依賴關係由容器在執行期決定,形象地說,即由容器動態地將某種依賴關係注入到元件之中,起到的主要作用是解耦。

SpringMVC、Spring、Hibernate在各層的作用:

(1)SpringMVC負責Web層:接收網頁中表單提交的資料,然後通過Controller進行處理,再跳轉到對應的網頁。在springmvc-servlet.xml中定義<servlet-mapping>,Controller會載入。

(2) Spring負責業務層管理,即Service(或Manager)。

Service為action提供統計的呼叫介面,封裝持久層的DAO;
可以寫一些自己的業務方法;
統一的Javabean管理方法;
宣告式事務管理;
整合Hibernate。

(3)Hibernate,負責持久化層,完成對資料庫的crud操作。提供OR/Mapping。它由一組.hbm.xml檔案和POJO(或者帶有註釋的POJO),是跟資料庫中的表相對應的。然後定義DAO,這些是跟資料庫打交道的類,它們會使用PO。



3. 框架業務邏輯分析:

在SpringMVC + Spring + Hibernate的系統中,

物件的呼叫流程是:JSP—Controller—Service—DAO—Hibernate。

資料的流向是:Controller接受使用者的資料,封裝成VO或PO,再呼叫業務層的Bean類,完成各種業務處理後再Forward。而業務層Bean收到這個PO物件之後,會呼叫DAO介面方法,進行持久化操作。

SSH框架的優點:

Hibernate的最大好處就是根據資料庫的表,反向生成實體類,並且還有關係在裡面,還有就是它對資料的操作也很方便;

Spring,省去了在類裡面new物件的過程,把這個呼叫與被呼叫的關係直接展示到了配置檔案裡,做任何操作都變得簡單了。

簡單流程舉例說明:

程式框架搭建好,並且把各種jar包匯入後,就開始進行業務邏輯分析——

   Controller(控制邏輯)層:它是負責在頁面和程式之間傳輸資料的,還有作用是做頁面跳轉。頁面由使用者填寫表單資料,點選提交按鈕,頁面的表單資料由傳入Service層。

Service層(業務邏輯層):負責的是對資料的處理。如果沒有資料處理任務的話,此層只做單純的資料傳遞作用,而後又到了DAO層。

DAO層(資料庫操作層):負責對資料向資料庫增刪改查的操作。

在該註冊的框架中,如果不使用Spring的話,每個層之間的資料傳遞都需要new一個呼叫該層資料的類的例項。而使用了Spring的話,需要做的就是把DAO層和BIZ層的每個類都寫一個介面類,介面類裡寫實現類的方法,在呼叫的時候不new物件,直接用物件點(.)方法就可以,別忘了對每個物件加上set/get方法。

人與人之間的區別,在於是否能管理好自己