struts:負責顯示層,是一個完美的MVC實現,它調用業務層完成運算邏輯,業務層再調用持久層完成數據庫的讀寫。程序員
Hibernate:建立一系列的持久化類,將每一個類的屬性與數據庫表的屬性一一對應。數據庫
Spring:依賴注射和控制反轉。只要拿到一個實現了這個接口的類,就能夠輕鬆的經過xml配置文件把實現類注射到調用接口的那個類裏。全部類之間的這種依賴關係就徹底經過配置文件的方式替代了。編程
Java Web應用程序架構:Struts負責顯示層,Hibernate負責持久層,Spring負責中間的業務層。緩存
另外,因爲Spring使用的依賴注射以及AOP(面向方面編程),因此它的這種內部模式很是優秀,以致於Spring本身也實現了一個使用依賴注射的MVC框架,叫作Spring MVC,同時爲了很好的處理事物,Spring集成了Hibernate,使事物管理從Hibernate的持久層提高到了業務層,使用更加方便和強大。session
所謂的三層開發就是將系統的整個業務應用劃分爲「表示層-業務邏輯層-數據訪問層」架構
一、Strutsapp
Struts的控制文件struts-config.xml、Action和Action Servlet實現MVC的控制器,JavaBean或者EJB完成MVC的模型部分,JSP頁面承擔MV的視圖組件,並且全部的控制邏輯都是有struts-config.xml配置文件來完成。框架
Struts2提供了豐富的攔截器實現ide
二、Hibernatespa
Hibernate是數據持久層的一個輕量級框架,它對JDBC進行了很是輕量級的對象封裝,使得Java程序員能夠爲所欲爲的使用
對象編程思惟來操縱數據庫。提供了查詢獲取數據的方法,用面向對象的思想來操做數據庫,節省開發處理數據的時間。
在物理數據庫之上利用一些配置文件如hibernate.cfg.xml、Action和Action文件、XML Mapping(映射文件)等來爲應用系統
提供數據持久化方面的服務,同時達到將應用系統的持久層與不一樣的物理數據庫系統相互隔離開的目的。
Hibernate的工做流程:
讀取並解析配置文件;
Configuration負責讀取並建立映射信息,建立session factory
SessionFactory負責建立session;
Transaction負責開啓事務Transaction;
Query負責執行持久化操做;
Transaction負責提交事務;
關閉session和session factory;
Hibernate中提供了兩級Cache,第一級別的緩存是Session級別緩存,它屬於事務範圍的緩存。由Hibernate管理,通常狀況下無需進行干預。第二級別的緩存是Session Factory級別緩存,屬於進程範圍或羣集範圍的緩存。能夠進行配置和更改,並能夠動態加載和卸載。
三、Spring
Spring:核心容器提供Spring框架的基本功能。核心容器主要組件是Bean Factory,它是工廠模式的實現。Bean Factory 使用控制反轉(IOC)模式將應用程序的配置和依賴性規範與實際的應用程序代碼分開。控制反轉即依賴注入是Spring的核心。對象間的某種依賴關係式由容器在運行期間注入調用者,控制程序間的關係的實現交給了外部容器來完成。
依賴注入存在2中實現方式:
一、設值注入即Set注入
二、構造注入
總結:
Struts 用於表示層,直接面向用戶,響應用戶的請求,爲顯示提供一個模型和一個控制器,並委派調用業務邏輯和其餘上層處理等功能。
Spring 在事務管理和依賴注入方面的獨特能力,實現處理應用程序的業務邏輯和業務校驗,以及提供與其餘層進行相互做用的接口等。
Hibernate 是ORM(對象關係映射) 的實現,利用它創建Java 對象模型的持久化對象,進而以面向對象的方式來方便地操做關係數據庫。
這樣Struts、Spring 和Hibernate 就可以很好地封裝各個層次的程序,如在處理前臺表示層時就不會把事務邏輯和持久化邏輯摻雜進來,從而最大限度地實現各層的高內聚低耦合目標。