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