JEE開發(fā)常用軟件體系架構(gòu)模式.ppt
《JEE開發(fā)常用軟件體系架構(gòu)模式.ppt》由會員分享,可在線閱讀,更多相關(guān)《JEE開發(fā)常用軟件體系架構(gòu)模式.ppt(85頁珍藏版)》請在裝配圖網(wǎng)上搜索。
,J2EE開發(fā)常用軟件體系架構(gòu)模式,華南師范大學(xué)軟件學(xué)院,作者:楊勁松,struts,hibernate,spring及其衍生框架,主要內(nèi)容:,1、軟件體系架構(gòu),——軟件無處不在,5/11/2020,華南師范大學(xué)軟件學(xué)院,3,1、軟件體系架構(gòu),——軟件開發(fā)現(xiàn)狀,5/11/2020,華南師范大學(xué)軟件學(xué)院,4,1、軟件體系架構(gòu),——軟件危機(jī)的案例,5/11/2020,華南師范大學(xué)軟件學(xué)院,5,IBM公司的OS/360,共約100萬條指令,花費(fèi)了5000個人年;經(jīng)費(fèi)達(dá)數(shù)億美元,而結(jié)果卻令人沮喪,錯誤多達(dá)2000個以上,系統(tǒng)根本無法正常運(yùn)行。OS/360系統(tǒng)的負(fù)責(zé)人Brooks這樣描述開發(fā)過程的困難和混亂:“…像巨獸在泥潭中作垂死掙扎,掙扎得越猛,泥漿就沾得越多,最后沒有一個野獸能夠逃脫淹沒在泥潭中的命運(yùn)?!?,1963年美國飛往火星的火箭爆炸,造成1000萬美元的損失。原因是FORTRAN程序:DO5I=1,3誤寫為:DO5I=1.3,,1967年蘇聯(lián)“聯(lián)盟一號”載人宇宙飛船在返航時,由于軟件忽略一個小數(shù)點,在進(jìn)入大氣層時因打不開降落傘而燒毀,,1、軟件體系架構(gòu),——軟件為什么會失效,5/11/2020,華南師范大學(xué)軟件學(xué)院,6,1、軟件體系架構(gòu),——產(chǎn)生軟件危機(jī)的根源,5/11/2020,華南師范大學(xué)軟件學(xué)院,7,軟件規(guī)模越來越大、復(fù)雜度越來越高用戶需求不明確缺乏正確有效的理論及工程指導(dǎo)——對用戶要求、實現(xiàn)條件沒有完整準(zhǔn)確的分析就匆忙編寫程序,是許多軟件開發(fā)失敗的主要原因,在此種背景下,人們認(rèn)識到軟件體系架構(gòu)的重要性,軟件工程研究初期重點放在數(shù)據(jù)結(jié)構(gòu)和算法的選擇,如Knuth提出了數(shù)據(jù)結(jié)構(gòu)+算法=程序,1、軟件體系架構(gòu),——什么是軟件體系架構(gòu),DewaynePerry和A1exanderWo1f,軟件體系結(jié)構(gòu)是具有一定形式的結(jié)構(gòu)化元素,即構(gòu)件的集合,包括處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件。,處理構(gòu)件負(fù)責(zé)對數(shù)據(jù)進(jìn)行加工數(shù)據(jù)構(gòu)件是被加工的信息連接構(gòu)件把體系結(jié)構(gòu)的不同部分組組合連接起來,MaryShaw和DavidGarlan,軟件體系結(jié)構(gòu)是軟件設(shè)計過程中的一個層次,這一層次超越計算過程中的算法設(shè)計和數(shù)據(jù)結(jié)構(gòu)設(shè)計,——關(guān)于整體系統(tǒng)結(jié)構(gòu)設(shè)計和描述方面的一些問題,如:全局組織和全局控制結(jié)構(gòu)關(guān)于通訊、同步與數(shù)據(jù)存取的協(xié)議,等,5/11/2020,華南師范大學(xué)軟件學(xué)院,8,1、軟件體系架構(gòu),——什么是軟件體系架構(gòu),Kruchten,軟件體系結(jié)構(gòu)有四個角度,它們從不同方面對系統(tǒng)進(jìn)行描述:,概念角度描述系統(tǒng)的主要構(gòu)件及它們之間的關(guān)系;模塊角度包含功能分解與層次結(jié)構(gòu);運(yùn)行角度描述了一個系統(tǒng)的動態(tài)結(jié)構(gòu);代碼角度描述了各種代碼和庫函數(shù)在開發(fā)環(huán)境中的組織,不同研究背景、應(yīng)用背景的人員從不同的角度給出了多達(dá)近百種定義,但有兩點共識:,軟件體系結(jié)構(gòu)對于軟件開發(fā)具有重要意義,必須采用良好的設(shè)計原則達(dá)到良好的結(jié)構(gòu)設(shè)計主流的定義都認(rèn)為:軟件體系結(jié)構(gòu)是用來表示軟件系統(tǒng)的總體結(jié)構(gòu)的,該結(jié)構(gòu)由軟件構(gòu)件和構(gòu)件之間的關(guān)系及約束構(gòu)成,5/11/2020,華南師范大學(xué)軟件學(xué)院,9,2、J2EE的體系架構(gòu),J2EE,為企業(yè)應(yīng)用系統(tǒng)的開發(fā)提供了一種多層分布式企業(yè)應(yīng)用模型按應(yīng)用邏輯按功能不同可以劃分為不同類型的組件,5/11/2020,華南師范大學(xué)軟件學(xué)院,客戶層,運(yùn)行在客戶計算機(jī)上的組件。Web層,運(yùn)行在J2EE服務(wù)器上的組件。業(yè)務(wù)層,同樣是運(yùn)行在J2EE服務(wù)器上的組件。企業(yè)信息系統(tǒng)層(EIS),是指運(yùn)行在EIS服務(wù)器上的軟件系統(tǒng)。,J2EE分層結(jié)構(gòu),2、J2EE的體系架構(gòu),J2EE,5/11/2020,華南師范大學(xué)軟件學(xué)院,11,2、J2EE的體系架構(gòu),J2EE,5/11/2020,華南師范大學(xué)軟件學(xué)院,12,2、J2EE的體系架構(gòu),J2EE,5/11/2020,華南師范大學(xué)軟件學(xué)院,13,2、J2EE的體系架構(gòu),5/11/2020,華南師范大學(xué)軟件學(xué)院,14,——什么是模式?什么是框架?,模式,即pattern。其實就是解決某一類問題的方法論。你把解決某類問題的方法總結(jié)歸納到理論高度,那就是模式。模式分為:體系結(jié)構(gòu)模式設(shè)計模式框架,即framework。建立在體系結(jié)構(gòu)模式的基礎(chǔ)上。包括大量組件,設(shè)計模式,與某一領(lǐng)域的具體應(yīng)用無關(guān)。,C/S:以數(shù)據(jù)庫為中心B/S多層架構(gòu)將顯示、業(yè)務(wù)運(yùn)算、數(shù)據(jù)庫等功能完全分離,杜絕彼此的耦合與影響,從而實現(xiàn)松耦合和良好的可維護(hù)性。,3、SSH框架,5/11/2020,華南師范大學(xué)軟件學(xué)院,15,——SSH簡介,Struts(表示層)+Spring(業(yè)務(wù)層)+Hibernate(持久層),5/11/2020,華南師范大學(xué)軟件學(xué)院,16,3、SSH框架,——SSH簡介,Struts(表示層)+Spring(業(yè)務(wù)層)+Hibernate(持久層),5/11/2020,華南師范大學(xué)軟件學(xué)院,17,3、SSH框架,——SSH簡介,Struts(表示層)+Spring(業(yè)務(wù)層)+Hibernate(持久層),5/11/2020,華南師范大學(xué)軟件學(xué)院,18,3、Struts,——Model1與Model2設(shè)計模式,以JSP為中心的開發(fā)模型,稱為Model1(JSP+JAVABEAN)業(yè)務(wù)邏輯與表示邏輯混和,不利維護(hù)與重用HTML中嵌入了大量的JAVA代碼驗證、流程控制、更新程序的狀態(tài)全部在JSP中完成,EnterpriseServers/DataSources,傳統(tǒng)的Model1(JSP+JAVABEAN),5/11/2020,華南師范大學(xué)軟件學(xué)院,19,3、Struts,——Model1與Model2設(shè)計模式,以servlet為中心的開發(fā)模型,Model2(JSP+Servlet+JAVABEAN),Model2(JSP+Servlet+JAVABEAN),MVC是一種設(shè)計模式,它強(qiáng)制性地把應(yīng)用程序的輸入、處理和輸出分開。MVC將應(yīng)用程序分成3部分:模型、視圖和控制器。,5/11/2020,華南師范大學(xué)軟件學(xué)院,20,3、Struts,——MVC模式,MVC模式模型(Model)是應(yīng)用程序的主體部分。模型表示業(yè)務(wù)數(shù)據(jù),或者業(yè)務(wù)邏輯。視圖(View)是應(yīng)用程序中用戶界面相關(guān)的部分,是用戶看到并與之交互的界面??刂破?Controller)工作就是根據(jù)用戶的輸入,控制用戶界面數(shù)據(jù)顯示和更新model對象狀態(tài)。,(控制器)接受用戶請求調(diào)用模型響應(yīng)用戶請求選擇視圖顯示響應(yīng)結(jié)果,(視圖)顯示模型狀態(tài)接受數(shù)據(jù)更新請求把用戶輸入數(shù)據(jù)傳給控制器,(模型)代表應(yīng)用程序狀態(tài)響應(yīng)狀態(tài)查詢處理業(yè)務(wù)流程通知視圖業(yè)務(wù)狀態(tài)更新,,方法調(diào)用,,事件,,,,,,,,,選擇視圖,業(yè)務(wù)處理,用戶請求,狀態(tài)查詢,通知數(shù)據(jù)更新,5/11/2020,華南師范大學(xué)軟件學(xué)院,21,3、Struts,——Struts框架概述,,,,Struts是一個現(xiàn)成的、優(yōu)秀的、基于MVC的Web應(yīng)用框架。,瀏覽器,Web服務(wù)器,ActionServlet,FormBean,(模型)JavaBeanEJB,Struts-config.xml,數(shù)據(jù)庫,MessageResouse,JSP,,(視圖),(控制器),Servlet/JSP容器,Struts框架結(jié)構(gòu),5/11/2020,華南師范大學(xué)軟件學(xué)院,22,3、Struts,——Struts框架概述,,,,Struts是一個現(xiàn)成的、優(yōu)秀的、基于MVC的Web應(yīng)用框架。,瀏覽器,Web服務(wù)器,ActionServlet,FormBean,(模型)JavaBeanEJB,Struts-config.xml,數(shù)據(jù)庫,MessageResouse,JSP,,(視圖),(控制器),Servlet/JSP容器,Struts框架結(jié)構(gòu),5/11/2020,華南師范大學(xué)軟件學(xué)院,23,3、Struts,——Struts框架概述,,,,Struts是一個現(xiàn)成的、優(yōu)秀的、基于MVC的Web應(yīng)用框架。,瀏覽器,Web服務(wù)器,ActionServlet,FormBean,(模型)JavaBeanEJB,Struts-config.xml,數(shù)據(jù)庫,MessageResouse,JSP,,(視圖),(控制器),Servlet/JSP容器,Struts框架結(jié)構(gòu),5/11/2020,華南師范大學(xué)軟件學(xué)院,24,3、Struts,——Struts的程序流程,JavaBean,JSP頁面,Client,Action,ActionServlet,ActionForm,1.HTTP請求,2.填充FormBean,3.轉(zhuǎn)發(fā)HTTP請求,4.調(diào)用ActionForm,5.調(diào)用JavaBean,6.回送ActionForward,7.轉(zhuǎn)發(fā)HTTP請求,8.調(diào)用JavaBean,9.HTTP響應(yīng),Struts-config.xml,Struts的程序流程,5/11/2020,華南師范大學(xué)軟件學(xué)院,25,3、Struts,——Struts1.x實例,Struts1.x實例(實現(xiàn)用戶登錄操作)用戶將看到一個登錄頁面,要求用戶輸入用戶名以及密碼如果用戶名以及密碼都是admin,提示登錄成功否則提示登錄失敗,,,,Login.jsp,login_error.jsp,login_success.jsp,5/11/2020,華南師范大學(xué)軟件學(xué)院,26,3、Struts,——Struts1.x實例,Struts1.x實例(實現(xiàn)用戶登錄操作)下載并解壓Struts項目從Apache網(wǎng)站下載struts;將壓縮包解壓到一個目錄,此目錄為STRUTS_HOME目錄;安裝Struts將STRUTS_HOME/lib目錄下的所有.jar文件拷貝到剛創(chuàng)建的web項目的/WEB-INF/lib目錄下;配置web.xml,添加Servlet映射配置;編寫Action類、編寫ActionForm類Action類處理業(yè)務(wù)流程;ActionForm類不是必須的,如果要接收客戶端提交的數(shù)據(jù)時需要;配置struts-config.xml在struts-config.xml文件中配置Action和ActionForm;編寫相應(yīng)JSP頁面,5/11/2020,華南師范大學(xué)軟件學(xué)院,27,3、Struts,——web.xml的配置,actionorg.apache.struts.action.ActionServletconfig/WEB-INF/struts-config.xml2action*.do,struts-config.xml存放路徑,在顯示層所有以*.do為擴(kuò)展名提交的URL,都會交由這個Servlet來處理。,5/11/2020,華南師范大學(xué)軟件學(xué)院,28,3、Struts,——struts-config.xml的配置,,指定Struts應(yīng)用中所有使用的ActionForm對象,ActionForm對象指定處理相關(guān)業(yè)務(wù)的Action,Action處理完業(yè)務(wù)后的跳轉(zhuǎn)頁面,5/11/2020,華南師范大學(xué)軟件學(xué)院,29,3、Struts,——LoginActionForm.java,publicclassLoginActionFormextendsActionForm{privateStringuserName;privateStringpassWord;publicStringgetUserName(){returnuserName;}publicvoidsetUserName(StringuserName){this.userName=userName;}publicStringgetPassWord(){returnpassWord;}publicvoidsetPassWord(StringpassWord){this.passWord=passWord;}},5/11/2020,華南師范大學(xué)軟件學(xué)院,30,3、Struts,——LoginAction.java,publicclassLoginActionextendsAction{publicActionForwardexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{Stringpath="error";LoginActionFormloginActionForm=(LoginActionForm)form;StringuserName=loginActionForm.getUserName();StringpassWord=loginActionForm.getPassWord();if(null!=userName}},5/11/2020,華南師范大學(xué)軟件學(xué)院,31,3、Struts,——LoginAction應(yīng)用程序的流程圖,LoginAction應(yīng)用程序的流程圖,5/11/2020,華南師范大學(xué)軟件學(xué)院,32,3、Struts,——Struts1.x與Struts2.x,Struts2同為MVC設(shè)計模式的開源框架在Struts2并不是在原有的Struts1.x基礎(chǔ)上的升級版本,而是來處另外一個非常有名的MVC框架WebWork。,官方描述:,Struts1.x存在的問題:在表現(xiàn)層技術(shù)單一與ServletAPI耦合嚴(yán)重,不便于測試代碼嚴(yán)重依賴StrutsAPI單元測試?yán)щy令人頭痛的ActionForm,Struts2的特點無需與ServletAPI整合,更容易測試優(yōu)雅的請求參數(shù)封裝靈活的視圖技術(shù)豐富的表達(dá)式語言機(jī)動,靈活,簡單的配置線程安全的控制器(Action),5/11/2020,華南師范大學(xué)軟件學(xué)院,33,3、Struts,——Struts2.x框架結(jié)構(gòu),Struts2框架結(jié)構(gòu)Struts2的體系與Struts1.x體系差別非常大,因為Struts2使用了WebWork的設(shè)計核心(XWork)。在Struts2中使用攔截器來處理用戶請求,從而允許用戶業(yè)務(wù)邏輯控制器與ServletAPI分離。,5/11/2020,華南師范大學(xué)軟件學(xué)院,34,3、Struts,——Struts2.x框架結(jié)構(gòu),Struts2框架結(jié)構(gòu)Struts2的體系與Struts1.x體系差別非常大,因為Struts2使用了WebWork的設(shè)計核心(XWork)。在Struts2中使用攔截器來處理用戶請求,從而允許用戶業(yè)務(wù)邏輯控制器與ServletAPI分離。,5/11/2020,華南師范大學(xué)軟件學(xué)院,35,3、Struts,——Struts2的核心思想,仍然是MVC設(shè)計模式Struts2的控制器由兩部分組成FilterDispatcher業(yè)務(wù)邏輯ActionStruts2提供了豐富的視圖展示JSPFreeMarker、VelocityJasperReport等報表類型AOP(AspectOrientedProgramming)面向方面編程實現(xiàn)在執(zhí)行Action的前后Structs2提供了大量攔截器來完成通用功能,5/11/2020,華南師范大學(xué)軟件學(xué)院,36,3、Struts,——補(bǔ)充:面向方面編程AOP,OOP選擇對象作為模塊的主要單元,將對象與系統(tǒng)的所有行為聯(lián)系起來對象成為問題領(lǐng)域和計算過程的主要元素問題:存在著許多橫切關(guān)注點(如安全性檢查、日志記錄、異常處理等)實現(xiàn)代碼和其他業(yè)務(wù)邏輯代碼混雜在一起、降低了模塊的可重用性AOP簡介(也叫面向切面編程)目標(biāo):對業(yè)務(wù)邏輯的各個部分進(jìn)行隔離主要功能:日志記錄,性能統(tǒng)計,安全控制,事務(wù)處理,異常處理等等主要意圖:將日志記錄等代碼從業(yè)務(wù)邏輯代碼中劃分出來通過對這些行為的分離,將它們獨立到非指導(dǎo)業(yè)務(wù)邏輯的方法中,進(jìn)而改變這些行為的時候不影響業(yè)務(wù)邏輯的代碼。,5/11/2020,華南師范大學(xué)軟件學(xué)院,37,3、Struts,——補(bǔ)充:面向方面編程AOP,AOP與OOP抽象類—Dog類Poodle繼承了Dog,Dog,Poodle,ObedientDog,定義標(biāo)識為ObedientDog的類,不是所有的Dogs都很馴服如果要ObedientDog類繼承Dog類,那么Poodle放在這個層次結(jié)構(gòu)中的哪個位置合適呢?,?,Obedient看作一個方面應(yīng)用到任何一類馴服的Dog我們反對以不恰當(dāng)?shù)姆绞綇?qiáng)制將該行為放在Dog層次結(jié)構(gòu)中,5/11/2020,華南師范大學(xué)軟件學(xué)院,38,3、Struts,——Struts2.x攔截器,攔截器(Interceptor)Struts2的核心組成部分例如文件的上傳和下載、國際化、轉(zhuǎn)換器和數(shù)據(jù)校驗等,Struts2利用內(nèi)建的攔截器完成Struts2文檔中對攔截器的解釋為:攔截器是動態(tài)攔截Action調(diào)用的對象;提供了一種機(jī)制,使開發(fā)者可以定義一個特定的功能模塊這個模塊可以在Action執(zhí)行之前或者之后運(yùn)行也可以在一個Action執(zhí)行之前阻止Action執(zhí)行同時也提供了一種可以提取Action中可重用的部分的方式。攔截器是AOP的一種實現(xiàn),底層通過動態(tài)代理模式完成。,5/11/2020,華南師范大學(xué)軟件學(xué)院,39,3、Struts,——Struts2.x攔截器,Struts2.x的攔截器,FilterDispatcher,,,ActionProxy,,類型轉(zhuǎn)換攔截器,,文件上傳攔截器等,Action,,Result,,,初始化并調(diào)用execute方法,攔截并處理用戶請求,然后到Action的execute方法處理用戶請求,,返回邏輯視圖,系統(tǒng)負(fù)責(zé)將邏輯視圖對應(yīng)的資源顯示給用戶,5/11/2020,華南師范大學(xué)軟件學(xué)院,40,3、Struts,——Struts2.x實例,Struts2.x實例(實現(xiàn)用戶登錄操作)導(dǎo)入Struts2類庫(以struts2.1.6為例),將其WEB-INF/lib目錄中的JAR拷貝到Project的WEB-INF/lib目錄下),5/11/2020,華南師范大學(xué)軟件學(xué)院,41,3、Struts,——Struts2.x實例,Struts2.x實例(實現(xiàn)用戶登錄操作)在web.xml文件中配置FilterDispatcher,struts2.0org.apache.struts2.dispatcher.FilterDispatcherstruts2.0/*,5/11/2020,華南師范大學(xué)軟件學(xué)院,42,3、Struts,——Struts2.x實例,Struts2.x實例(實現(xiàn)用戶登錄操作)在開發(fā)Action,publicclassLoginAction{privateStringname;privateStringpassword;publicStringexecute()throwsException{if(this.name.equals(“admin")}setter/getter},實現(xiàn)業(yè)務(wù)邏輯處理,5/11/2020,華南師范大學(xué)軟件學(xué)院,43,3、Struts,——Struts2.x實例,Struts2.x實例(實現(xiàn)用戶登錄操作)配置struts.xml文件在WEB-INF/classes錄下創(chuàng)建struts.xml文件,/login_success.jsp/login_error.jsp,對Action類進(jìn)行配置,編寫相關(guān)JSP文件,3、Hibernate,——ORM簡介,對象關(guān)系映射(ObjectRelationalMapping,簡稱ORM)ORM是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫存在的互不匹配的現(xiàn)象的技術(shù)。簡單說,是將對象和對象之間的關(guān)系對應(yīng)的到數(shù)據(jù)庫表和表之間的關(guān)系。持久化和持久化層持久化,把內(nèi)存中的數(shù)據(jù)保存到數(shù)據(jù)庫(如關(guān)系數(shù)據(jù)庫)或永久設(shè)備(如、硬盤)中。,持久化,數(shù)據(jù)庫,存儲設(shè)備,數(shù)據(jù),對象,,內(nèi)存,,裝載,持久化原理,5/11/2020,華南師范大學(xué)軟件學(xué)院,44,3、Hibernate,——持久化和持久化層,持久化和持久化層持久化層,專門負(fù)責(zé)持久化工作的邏輯層,由它統(tǒng)一與數(shù)據(jù)庫層打交道,不難發(fā)現(xiàn)持久層封裝了所有與數(shù)據(jù)庫有關(guān)的操作和細(xì)節(jié),5/11/2020,華南師范大學(xué)軟件學(xué)院,45,3、Hibernate,——實體域模型與關(guān)系數(shù)據(jù)模型,實體域模型與關(guān)系數(shù)據(jù)模型實體域模型是對真實世界物質(zhì)實體(如學(xué)生、老師、商品等)的抽象。關(guān)系數(shù)據(jù)模型則是對關(guān)系型數(shù)據(jù)庫中關(guān)系數(shù)據(jù)(如表、視圖等)的一種靜態(tài)描述。,5/11/2020,華南師范大學(xué)軟件學(xué)院,46,,City.java,City的數(shù)據(jù)表,實體域模型示面向?qū)ο蟮模P(guān)系數(shù)據(jù)模型是面向關(guān)系型數(shù)據(jù)庫的。他們之間的數(shù)據(jù)交換需要一個映射過程(對象-關(guān)系映射),3、Hibernate,——ORM簡介,如何進(jìn)行對象-關(guān)系數(shù)據(jù)庫的匹配?,5/11/2020,華南師范大學(xué)軟件學(xué)院,47,使用JDBC手工轉(zhuǎn)換。使用ORM(對象關(guān)系映射)框架來解決,主流的ORM框架有Hibernate、iBATIS、OJB等。,3、Hibernate,——實體域模型與關(guān)系數(shù)據(jù)模型,實體域?qū)ο驝ity與關(guān)系數(shù)據(jù)表City之間可以通過Hibernate的映射文件City.hbm.xml進(jìn)行映射。,5/11/2020,華南師范大學(xué)軟件學(xué)院,48,,,Class元素定義了一個持久化類Name指定一個類名,table指定一個表名,,Id元素定義了屬性到數(shù)據(jù)庫表主鍵字段的映射,City.hbm.xml,3、Hibernate,——Hibernate簡介,Hibernate簡介,5/11/2020,華南師范大學(xué)軟件學(xué)院,49,一個面向Java環(huán)境的對象/關(guān)系數(shù)據(jù)庫映射工具;一個輕量級的ORM框架;用來把對象模型表示的對象映射到基于SQL的關(guān)系模型數(shù)據(jù)結(jié)構(gòu)中去;獨立的持久層框架,不與具體服務(wù)器相關(guān);除提供對象關(guān)系映射,同時提供了數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法。,Hibernate的優(yōu)缺點:不需要編寫的SQL語句移植性好實現(xiàn)了透明持久化代碼測試方便,Hibernate使用范圍:針對單個對象進(jìn)行修改編輯時,適用對象之間有著很清晰的關(guān)系,適用批量性添加、修改時,不適用要求使用數(shù)據(jù)庫中特定的功能時,不適用,3、Hibernate,——Hibernate體系結(jié)構(gòu),Hibernate作為模型層/數(shù)據(jù)訪問層。它通過配置文件(hibernate.cfg.xml或hibernate.properties)和映射文件(*.hbm.xml)把java對象或持久化對象(PersistentObject,PO)映射到數(shù)據(jù)庫中的數(shù)據(jù)表,然后通過操作PO,對數(shù)據(jù)庫中的表進(jìn)行各種操作。,5/11/2020,華南師范大學(xué)軟件學(xué)院,50,應(yīng)用程序,,數(shù)據(jù)庫,持久化對象,Hibernate配置:如:hibernate.cfg.xml或hibernate.properties,Hibernatel體系結(jié)構(gòu),Hibernate映射:如:City.hbm.xml,3、Hibernate,——Hibernate實例,5/11/2020,華南師范大學(xué)軟件學(xué)院,51,Hibernate實例(實現(xiàn)用戶登錄操作),用拷貝支持lib和Hibernate應(yīng)用包到Struts應(yīng)用的WEB-INF\lib目錄下,創(chuàng)建數(shù)據(jù)庫表–REGISTEDUSERS,3、Hibernate,——Hibernate實例,5/11/2020,華南師范大學(xué)軟件學(xué)院,52,Hibernate實例(實現(xiàn)用戶登錄操作),用拷貝支持lib和Hibernate應(yīng)用包到Struts應(yīng)用的WEB-INF\lib目錄下,創(chuàng)建數(shù)據(jù)庫表–REGISTEDUSERS,創(chuàng)建創(chuàng)建持久化類–User,3、Hibernate,——Hibernate實例,5/11/2020,華南師范大學(xué)軟件學(xué)院,53,Hibernate實例(實現(xiàn)用戶登錄操作),用拷貝支持lib和Hibernate應(yīng)用包到Struts應(yīng)用的WEB-INF\lib目錄下,創(chuàng)建數(shù)據(jù)庫表–REGISTEDUSERS,創(chuàng)建創(chuàng)建持久化類–User,創(chuàng)建配置文件--User.hbm.xml,3、Hibernate,——Hibernate實例,5/11/2020,華南師范大學(xué)軟件學(xué)院,54,Hibernate實例(實現(xiàn)用戶登錄操作),用拷貝支持lib和Hibernate應(yīng)用包到Struts應(yīng)用的WEB-INF\lib目錄下,創(chuàng)建數(shù)據(jù)庫表–REGISTEDUSERS,創(chuàng)建創(chuàng)建持久化類–User,創(chuàng)建配置文件--User.hbm.xml,在Hibernate配置文件中增加映射內(nèi)容–hibernate.cfg.xml,3、Hibernate,——Hibernate實例,5/11/2020,華南師范大學(xué)軟件學(xué)院,55,Hibernate實例(實現(xiàn)用戶登錄操作),用拷貝支持lib和Hibernate應(yīng)用包到Struts應(yīng)用的WEB-INF\lib目錄下,創(chuàng)建數(shù)據(jù)庫表–REGISTEDUSERS,創(chuàng)建創(chuàng)建持久化類–User,創(chuàng)建配置文件--User.hbm.xml,在Hibernate配置文件中增加映射內(nèi)容,編寫DAO接口和實現(xiàn),3、Hibernate,——Hibernate實例,5/11/2020,華南師范大學(xué)軟件學(xué)院,56,Hibernate實例(實現(xiàn)用戶登錄操作),用拷貝支持lib和Hibernate應(yīng)用包到Struts應(yīng)用的WEB-INF\lib目錄下,創(chuàng)建數(shù)據(jù)庫表–REGISTEDUSERS,創(chuàng)建創(chuàng)建持久化類–User,創(chuàng)建配置文件--User.hbm.xml,在Hibernate配置文件中增加映射內(nèi)容,編寫DAO接口和實現(xiàn),3、Hibernate,——Hibernate實例,5/11/2020,華南師范大學(xué)軟件學(xué)院,57,Hibernate實例(實現(xiàn)用戶登錄操作),用拷貝支持lib和Hibernate應(yīng)用包到Struts應(yīng)用的WEB-INF\lib目錄下,創(chuàng)建數(shù)據(jù)庫表–REGISTEDUSERS,創(chuàng)建創(chuàng)建持久化類–User,創(chuàng)建配置文件--User.hbm.xml,在Hibernate配置文件中增加映射內(nèi)容,編寫DAO接口和實現(xiàn),在Struts的ActionBean中訪問DAO接口,5/11/2020,華南師范大學(xué)軟件學(xué)院,58,讀取并解析配置文件讀取并解析映射信息,創(chuàng)建SessionFactory打開Sesssion創(chuàng)建事務(wù)Transation持久化操作提交事務(wù)關(guān)閉Session關(guān)閉SesstionFactory,3、Hibernate,——Hibernate工作流程,Hibernate工作流程,3、Hibernate,——Hibernate工作流程,5/11/2020,華南師范大學(xué)軟件學(xué)院,59,Hibernate工作流程,啟動hibernate,構(gòu)建configuration實例,初始化該實例中的所有變量,加載hibernate.cfg.xml文件至該實例(內(nèi)存),通過hibernate.cfg.xml文件中的mapping節(jié)點配置加載*.hbm.xml至該實例(內(nèi)存),,,,利用configuration實例創(chuàng)建一個工廠類SessionFactory實例,SessionFactory類創(chuàng)建連接,SessionFactory實例創(chuàng)建事務(wù)接口,通過session接口提供的各種方法操縱數(shù)據(jù)庫,提交數(shù)據(jù)庫事務(wù),關(guān)閉session,,,,,,,,,,3、Spring,——Spring簡介,5/11/2020,華南師范大學(xué)軟件學(xué)院,60,Spring為企業(yè)應(yīng)用的開發(fā)提供了一個輕量級的解決方案目標(biāo):使現(xiàn)有技術(shù)更加易用,推進(jìn)編碼最佳實踐內(nèi)容:依賴注入,AOP實現(xiàn)(聲明式事務(wù)),DAO/ORM支持,Web集成等框架的主要優(yōu)勢之一就是其分層架構(gòu)由7個定義良好的模塊組成。Spring模塊構(gòu)建在核心容器之上,核心容器定義了創(chuàng)建、配置和管理bean的方式。,SpringAOP,SpringORM,SpringDAO,Springweb,Springcontext,SpringWebMVC,Springcore,Spring框架的7個模塊,3、Spring,——Spring框架,5/11/2020,華南師范大學(xué)軟件學(xué)院,61,SpringAOP,SpringORM,SpringDAO,Springweb,Springcontext,SpringWebMVC,Springcore,提供Spring框架的基本功能主要組件是BeanFactory,它是工廠模式的實現(xiàn),一個配置文件向Spring框架提供上下文信息,提供了有意義的異常層次結(jié)構(gòu)可用該結(jié)構(gòu)來管理異常處理和不同數(shù)據(jù)庫供應(yīng)商拋出的錯誤消息,通過配置管理特性集成了面向方面的編程功能,提供了ORM的對象關(guān)系工具,為基于Web的應(yīng)用程序提供了上下文,全功能的構(gòu)建Web應(yīng)用程序的MVC實現(xiàn),Spring框架,3、Spring,——工廠模式通過把JSF與EJB3.0組件合并在一起,從而為開發(fā)基于Web的企業(yè)應(yīng)用程序提供一個最新的模式。Seam可以讓你把EJB組件直接綁定到JSF頁面。Seam能夠統(tǒng)一和集成現(xiàn)有的開源技術(shù)集成如Facelets、Hibernate、jBPM、Drools、Groovy、JavaPortlets、BPM、AJAX、iText等ExpressoFramework一個基于開放標(biāo)準(zhǔn)的J2EE體系框架,可以讓開發(fā)者專注于應(yīng)用程序邏輯;是一個可擴(kuò)展JavaServer應(yīng)用程序框架組件庫,用于創(chuàng)建基于開放標(biāo)準(zhǔn)的數(shù)據(jù)庫驅(qū)動的Web應(yīng)用程序;Expresso和ApacheJakartaStruts集成在一起,后者強(qiáng)調(diào)表達(dá)和應(yīng)用的配置并為Expresso提供了一個功能強(qiáng)大的標(biāo)簽庫。,5、書籍推薦,《輕量級JavaEE企業(yè)應(yīng)用實戰(zhàn):Struts2+Spring+Hibernate整合開發(fā)》作者:李剛著,《Spring3.x企業(yè)應(yīng)用開發(fā)實戰(zhàn)》作者:陳雄華,謝謝觀看,- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- JEE 開發(fā) 常用軟件 體系 架構(gòu) 模式
鏈接地址:http://zhongcaozhi.com.cn/p-12559869.html