Java Web Action DAO Service層次理解

來源:互聯網
上載者:User

標籤:分層   border   actions   java ee   over   spring   hibernate   art   知識   

參考來源:http://blog.csdn.net/inter_peng/article/details/41021727

1. Action/Service/DAO簡介:

      Action是管理業務(Service)調度和管理跳轉的。

      Service是管理具體的功能的。

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

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

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

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

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

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

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

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

      以上的Hibernate, Struts,都需要注入到spring的設定檔中,Spring把這些聯絡起來,成為一個整體。

 

2. 三大架構Struts/Hibernate/Spring

      簡單地說:

     Struts——控制用的;

     Hibernate——操作資料庫的;

     Spring——解耦用的。

     詳細地說:

      Struts在SSH架構中起控制的作用,其核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,主要控制邏輯關係的處理。

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

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

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

    (1)Struts負責Web層:ActionFormBean接收網頁中表單提交的資料,然後通過Action進行處理,再Forward到對應的網頁。在Struts-config.xml中定義<action-mapping>,ActionServlet會載入。

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

  • Service為action提供統計的調用介面,封裝持久層的DAO;
  • 可以寫一些自己的業務方法;
  • 統一的Javabean管理方法;
  • 聲明式交易管理;
  • 整合Hibernate。

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

 

3. 架構商務邏輯分析:

       在Struts + Spring + Hibernate的系統中,

       對象的調用流程是:JSP—Action—Service—DAO—Hibernate

       資料的流向是:ActionFormBean接受使用者的資料,Action將資料從ActionFormBean中取出,封裝成VO或PO,再調用業務層的Bean類,完成各種業務處理後再Forward。而業務層Bean收到這個PO對象之後,會調用DAO介面方法,進行持久化操作。

      SSH架構的優點:

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

      Spring,省去了在類裡面new對象的過程,把這個調用與被調用的關係直接展示到了設定檔裡,做任何操作都變得簡單了。

      簡單流程舉例說明:

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

      假設一個最基本的註冊功能:頁面有兩個文字框,一個使用者名稱(username)和一個密碼(password)。以QQ註冊網頁說明,這裡以暱稱和密碼為代表進行舉例。

        首先是action層:它是負責在頁面和程式之間傳輸資料的,還有作用是做頁面跳轉。頁面由使用者填寫表單資料,點擊提交按鈕,頁面的表單資料由Hibernate自動封裝到該頁面表單所對應的ActionFrom(ActionFrom跟實體類不是一個東西,ActionFrom是頁面有什麼值,類裡就寫什麼屬性,是用來封裝表單資料用的;而實體類是完全按照資料庫的欄位產生的,實體類可以當做ActionFrom用,但ActionFrom絕對不可以當做實體類用),這樣表單資料就以ActionFrom對象的形式在Action的點擊“提交按鈕”執行的那個方法裡存在了。這個時候需要做的就是把表單資料存入資料庫中。此時,Action的功能告一段落,接著是把資料傳入BIZ層。

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

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

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

Java Web Action DAO Service層次理解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.