Java新手如何学习Spring、Struts、Hibernate三大框架?
spring,hibernate,struts 是JavaEE方向企業使用較多的幾個框架技術,所以就會很多人想去學習這幾個框架,當然這幾個框架流行的時間也比較長了,相對資料也會比較多,但是適合新手的并不多,所以我就新手學習這幾個框架來說說
1:Spring 近年來發展的越來越大,基本形成基于spring的一個開發的生態鏈,提到spring就會提到EJB,曾經使用過EJB開發JAVA EE應用的人,一定知道,在EJB開始的學習和應用非常的艱苦,很多東西都不能一下子就很容易的理解。EJB要嚴格地實現各種不同類型的接口,類似的或者重復的代碼大量存在。而配置也是復雜和單調,同樣使用JNDI進行對象查找的代碼也是單調而枯燥。雖然有一些開發工作隨著xdoclet的出現,而有所緩解,但是學習EJB的高昂代價,和極低的開發效率,極高的資源消耗,都造成了EJB的使用困難。而Spring出現的初衷就是為了解決類似的這些問題。Spring的一個最大的目的就是使JAVA EE開發更加容易。同時,Spring之所以與Struts、Hibernate等單層框架不同,是因為Spring致力于提供一個以統一的、高效的方式構造整個應用,并且可以將單層框架以最佳的組合揉和在一起建立一個連貫的體系。可以說Spring是一個提供了更完善開發環境的一個框架,可以為POJO(Plain Ordinary Java Object)對象提供企業級的服務。
Spring的形成,最初來自Rod Jahnson所著的一本很有影響力的書籍《Expert One-on-One J2EE Design and Development》,就是在這本書中第一次出現了Spring的一些核心思想,該書出版于2002年。另外一本書《Expert One-on-One J2EE Development without EJB》,更進一步闡述了在不使用EJB開發JAVA EE企業級應用的一些設計思想和具體的做法。有時間了可以詳細的研讀一下。
Spring是一個開源框架,它由Rod Johnson創建。它是為了解決企業應用開發的復雜性而創建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。
Spring提供一個輕量級的控制反轉(IoC)和面向切面(AOP)Javabean的容器,那么這個怎么理解了,也就是說,在程序中經常會出現bean與bean之間的相互引用,形成依賴關系,所以spring核心是要解耦,或者說把形成的依賴關系降低。那么在面向對象設計原則中說到依賴倒置原則,所以spring提供一個bean的容器,在spring啟動或者工作的時候,會按照依賴的關系自動的把依賴的bean注入到引用bean的地方,這樣依賴關系由原來的bean與bean之間的耦合改變成統一由spring管理。從而形成程序的依賴關系由spring控制,這就是著名的springIOC(控制反轉)
AOP :Spring提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們并不負責(甚至是意識)其它的系統級關注點,例如日志或事務支持。
當然spring還提供對于數據源,數據池,JDBC等組件的支持
Spring的架構圖
從spring的架構圖中能看出spring的一切都是從核心的IOC開始,演化出了一系列的模塊組件
所以想要學好spring,那么第一步先要知道spring最終的目的是什么,再去看看spring的源碼,提高一些Java的基礎知識,例如:反射,動態代理等等
Hibernate:
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,它將POJO與數據庫表建立映射關系,是一個全自動的orm框架,hibernate可以自動生成SQL語句,自動執行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的JaveEE架構中取代CMP,完成數據持久化的業務
2001年,澳大利亞墨爾本一位名為Gavin King的27歲的程序員,上街買了一本SQL編程的書,他厭倦了實體bean,認為自己可以開發出一個符合對象關系映射理論,并且真正好用的Java持久化層框架,因此他需要先學習一下SQL。這一年的11月,Hibernate的第一個版本發布了。
2002年,已經有人開始關注和使用Hibernate了。
2003年9月,Hibernate開發團隊進入JBoss公司,開始全職開發Hibernate,從這個時候開始Hibernate得到了突飛猛進的普及和發展。
2004年,整個Java社區開始從實體bean向Hibernate轉移,特別是在Rod Johnson的著作《Expert One-on-One J2EE Development without EJB》出版后,由于這本書以扎實的理論、充分的論據和詳實的論述否定了EJB,提出了輕量級敏捷開發理念之后,以Hibernate和Spring為代表的輕量級開源框架開始成為Java世界的主流和事實標準。在2004年Sun領導的J2EE5.0標準制定當中的持久化框架標準正式以Hibernate為藍本。
2006年,J2EE5.0標準正式發布以后,持久化框架標準Java Persistent API(簡稱JPA)基本上是參考Hibernate實現的,而Hibernate在3.2版本開始,已經完全兼容JPA標準。
Hibernate的API一共有6個,分別為:Session、SessionFactory、Transaction、Query、Criteria和Configuration。通過這些接口,可以對持久化對象進行存取、事務控制。
Session
Session接口負責執行被持久化對象的CRUD操作(CRUD的任務是完成與數據庫的交流,包含了很多常見的SQL語句)。但需要注意的是Session對象是非線程安全的。同時,Hibernate的session不同于JSP應用中的HttpSession。這里當使用session這個術語時,其實指的是Hibernate中的session,而以后會將HttpSession對象稱為用戶session。
SessionFactory
SessionFactory接口負責初始化Hibernate。它充當數據存儲源的代理,并負責創建Session對象。這里用到了工廠模式。需要注意的是SessionFactory并不是輕量級的,因為一般情況下,一個項目通常只需要一個SessionFactory就夠,當需要操作多個數據庫時,可以為每個數據庫指定一個SessionFactory。
Transaction
Transaction 接口是一個可選的API,可以選擇不使用這個接口,取而代之的是Hibernate 的設計者自己寫的底層事務處理代碼。 Transaction 接口是對實際事務實現的一個抽象,這些實現包括JDBC的事務、JTA 中的UserTransaction、甚至可以是CORBA 事務。之所以這樣設計是能讓開發者能夠使用一個統一事務的操作界面,使得自己的項目可以在不同的環境和容器之間方便地移植。
Query
Query接口讓你方便地對數據庫及持久對象進行查詢,它可以有兩種表達方式:HQL語言或本地數據庫的SQL語句。Query經常被用來綁定查詢參數、限制查詢記錄數量,并最終執行查詢操作。
Criteria
Criteria接口與Query接口非常類似,允許創建并執行面向對象的標準化查詢。值得注意的是Criteria接口也是輕量級的,它不能在Session之外使用。
Configuration
Configuration 類的作用是對Hibernate 進行配置,以及對它進行啟動。在Hibernate 的啟動過程中,Configuration 類的實例首先定位映射文檔的位置,讀取這些配置,然后創建一個SessionFactory對象。雖然Configuration 類在整個Hibernate 項目中只扮演著一個很小的角色,但它是啟動hibernate 時所遇到的第一個對象。
Hibenate 其實就是一個ORM映射的一個持久化框架,說的在通俗一點就是對Java基礎中學習的JDBC的一個封裝,那么不需要再定義SQL語句,Hibenrate可以根據一個關系映射文件來自動的生成SQL語句,然后連接數據庫并完成操作。當然hibernate還會提供緩存呀,延時加載呀等等來提高效率。
Struts:
Struts是Apache軟件基金會(ASF)贊助的一個開源項目。它最初是Jakarta項目中的一個子項目,并在2004年3月成為ASF的頂級項目。它通過采用Java Servlet/JSP技術,實現了基于Java EE Web應用的Model-View-Controller(MVC)設計模式的應用框架,是MVC經典設計模式中的一個經典產品。
在Struts中,已經由一個名為ActionServlet的Servlet充當控制器(Controller)的角色,根據描述模型、視圖、控制器對應關系的struts-config.xml的配置文件,轉發視圖(View)的請求,組裝響應數據模型(Model)。在MVC的模型(Model)部分,經常劃分為兩個主要子系統(系統的內部數據狀態與改變數據狀態的邏輯動作),這兩個概念子系統分別具體對應Struts里的ActionForm與Action兩個需要繼承實現超類。在這里,Struts可以與各種標準的數據訪問技術結合在一起,包括Enterprise Java Beans(EJB),JDBC與JNDI。在Struts的視圖(View)端,除了使用標準的JavaServer Pages(JSP)以外,還提供了大量的標簽庫使用,同時也可以與其他表現層組件技術(產品)進行整合,比如Velocity Templates,XSLT等。通過應用Struts的框架,最終用戶可以把大部分的關注點放在自己的業務邏輯(Action)與 映射關系的配置文件(struts-config.xml)中。
?
總結
以上是生活随笔為你收集整理的Java新手如何学习Spring、Struts、Hibernate三大框架?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Redis设计与实现》之第十一章:AO
- 下一篇: java美元兑换,(Java实现) 美元