標籤:jar 資料庫查詢 整合 而不是 依賴 str 原始碼 factory 網上
打算看Spring,作為三大架構之一,一直很困惑她有什麼用?為什麼要使用Spring呢?回過頭來想想過去一年花了很多時間來看Struts、Hibernate,總是不停地去他們有什麼用,怎麼去用,卻從沒去想過為什麼要使用他們?必須要使用SSH嗎?所以花了點時間去搜集資料(大部分來自網上,引用出處太多,恕不一一標明。)。
SSH 在J2EE項目中表示了3種架構,即 Spring + Struts +Hibernate。 Struts對Model,View和Controller都提供了對應的組件。Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器架構,它由Rod Johnson建立。它是為瞭解決公司專屬應用程式開發的複雜性而建立的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。 Hibernate是一個開放原始碼的對象關係映射架構,它對JDBC進行了非常輕量級的對象封裝,可以應用在任何使用JDBC的場合,可以在Servlet/JSP的Web應用中使用,也可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任。
Struts2原理就是用攔截器,使得你用戶端發送的請求都被攔截下來後處理。攔截器用到了反射機制。Struts2主要的功能是控制轉寄,在於Action的處理,和struts.xml配置。
Spring其實包含了很多的知識,用到的有IOC,AOP等,其實就是一個管理架構的容器,你不用再考慮你new對象了,它會幫你做,降低了層與層之間的耦合度。Spring裡面有很多的思想,IOC就是控制反轉,注入。AOP是面向切面的,有點像攔截器。
Hibernate是持久層架構,我們平時用JDBC操作資料庫要寫SQL語句,有時候欄位一多會很麻煩,於是用hibernate就很方便了,你只要熟練掌握裡面的映射關係,就不用寫sql語句了,它會幫你寫,API調用一下很方便的。
Struts
1.Struts架構結構
如:
Struts對Model,View和Controller都提供了對應的組件。
在右圖中,ActionServlet,這個類是Struts的核心控制器,負責攔截來自使用者的請求。
Action,這個類通常由使用者提供,該控制器負責接收來自ActionServlet的請求,並根據該請求調用模型的商務邏輯方法處理請求,並將處理結果返回給JSP頁面顯示。
2.Model部分 由ActionForm和JavaBean組成,其中ActionForm用於封裝使用者的請求參數,封裝成ActionForm對象,該對象被ActionServlet轉寄給Action,Action根據ActionForm裡面的請求參數處理使用者的請求。
JavaBean則封裝了底層的商務邏輯,包括資料庫訪問等。
3.View部分 該部分採用JSP實現。
Struts提供了豐富的標籤庫,通過標籤庫可以減少指令碼的使用,自訂的標籤庫可以實現與Model的有效互動,並增加了現實功能。對應的JSP部分。
4.Controller組件 Controller組件有兩個部分組成——系統核心控制器,商務邏輯控制器。
系統核心控制器,對應的ActionServlet。該控制器由Struts架構提供,繼承HttpServlet類,因此可以配置成標註的Servlet。該控制器負責攔截所有的HTTP請求,然後根據使用者請求決定是否要轉給商務邏輯控制器。
商務邏輯控制器,負責處理使用者請求,本身不具備處理能力,而是調用Model來完成處理。對應Action部分。
Spring
1.簡介
◆目的:解決公司專屬應用程式開發的複雜性
◆功能:使用基本的JavaBean代替EJB,並提供了更多的公司專屬應用程式功能
◆範圍:任何Java應用
簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器架構。
2.輕量 從大小與開銷兩方面而言Spring都是輕量的。完整的Spring架構可以在一個大小隻有1MB多的JAR檔案裡發布。並且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴於Spring的特定類。
3.控制反轉 Spring通過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己建立或者尋找依賴對象。你可以認為IoC與JNDI相反——不是對象從容器中尋找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。
4.面向切面 Spring提供了面向切面編程的豐富支援,允許通過分離應用的商務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成商務邏輯——僅此而已。它們並不負責(甚至是意識)其它的系統級關注點,例如日誌或事務支援。
5.容器 Spring包含並管理應用對象的配置和生命週期,在這個意義上它是一種容器,你可以配置你的每個bean如何被建立——基於一個可配置原型(prototype),你的bean可以建立一個單獨的執行個體或者每次需要時都產生一個新的執行個體——以及它們是如何相互關聯的。然而,Spring不應該被混同於傳統的重量級的EJB容器,它們經常是龐大與笨重的,難以使用。
6.架構 Spring可以將簡單的組件配置、組合成為複雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個XML檔案裡。Spring也提供了很多基礎功能(交易管理、持久化框架組成等等),將應用邏輯的開發留給了你。
所有Spring的這些特徵使你能夠編寫更乾淨、更可管理、並且更易於測試的代碼。它們也為Spring中的各種模組提供了基礎支援。
Hibernate
1.簡介
Hibernate是一個開放原始碼的對象關係映射架構,它對JDBC進行了非常輕量級的對象封裝,使得Java程式員可以隨心所欲的使用對象編程思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的用戶端程式使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任。
Hibernate的核心介面一共有5個,分別為:Session、SessionFactory、Transaction、Query和Configuration。這5個核心介面在任何開發中都會用到。通過這些介面,不僅可以對持久化對象進行存取,還能夠進行事務控制。下面對這五個核心介面分別加以介紹。
2.Session介面 Session介面負責執行被持久化對象的CRUD操作(CRUD的任務是完成與資料庫的交流,包含了很多常見的SQL語句。)。但需要注意的是Session對象是非安全執行緒的。同時,Hibernate的session不同於JSP應用中的HttpSession。這裡當使用session這個術語時,其實指的是Hibernate中的session,而以後會將HttpSesion對象稱為使用者session。
3.SessionFactory介面 SessionFactory介面負責初始化Hibernate。它充當資料存放區源的代理,並負責建立Session對象。這裡用到了原廠模式。需要注意的是SessionFactory並不是輕量級的,因為一般情況下,一個項目通常只需要一個SessionFactory就夠,當需要操作多個資料庫時,可以為每個資料庫指定一個SessionFactory。
4.Configuration介面 Configuration介面負責配置並啟動Hibernate,建立SessionFactory對象。在Hibernate的啟動的過程中,Configuration類的執行個體首先定位映射文檔位置、讀取配置,然後建立SessionFactory對象。
5.Transaction介面 Transaction介面負責事務相關的操作。它是可選的,開發人員也可以設計編寫自己的底層交易處理代碼。
6.Query和Criteria介面 Query和Criteria介面負責執行各種資料庫查詢。它可以使用HQL語言或SQL語句兩種表達方式。
[轉]為什麼要使用架構