J2EE架構(gòu)設(shè)計UML軟件工程組織_第1頁
J2EE架構(gòu)設(shè)計UML軟件工程組織_第2頁
J2EE架構(gòu)設(shè)計UML軟件工程組織_第3頁
J2EE架構(gòu)設(shè)計UML軟件工程組織_第4頁
J2EE架構(gòu)設(shè)計UML軟件工程組織_第5頁
已閱讀5頁,還剩108頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、J2EE架構(gòu)設(shè)計UML軟件工程組織J2EE架構(gòu)設(shè)計UML軟件工程組織課程安排第一部份:介紹實例架構(gòu)結(jié)合實例講解Web項目總體結(jié)構(gòu)分析多層結(jié)構(gòu)優(yōu)點具體講解每個層次的實現(xiàn)技巧J2EE架構(gòu)設(shè)計UML軟件工程組織課程安排第一部份:介紹實例架構(gòu)J2EE架構(gòu)設(shè)計UML軟件工程課程安排第二部分:介紹組織層次關(guān)聯(lián)利器(Spring)快速入門Factory模式IOC模式AOP模式演練Spring的威力J2EE架構(gòu)設(shè)計UML軟件工程組織課程安排第二部分:介紹組織層次關(guān)聯(lián)利器(Spring)J2E課程安排第三部分:介紹日志管理利器(Log4j)快速入門演練Log4j的優(yōu)越性J2EE架構(gòu)設(shè)計UML軟件工程組織課程安排

2、第三部分:介紹日志管理利器(Log4j)J2EE架構(gòu)課程安排第四部分:介紹UI層利器(Struts)Struts介紹快速入門ActionFromAction客戶端驗證J2EE架構(gòu)設(shè)計UML軟件工程組織課程安排第四部分:介紹UI層利器(Struts)J2EE架構(gòu)課程安排第五部分:介紹數(shù)據(jù)持久層利器(HIbernate)快速入門介紹輔助工具表與表之間關(guān)聯(lián)操作多數(shù)據(jù)庫操作事務(wù)管理DAO模式與Spring結(jié)合使用J2EE架構(gòu)設(shè)計UML軟件工程組織課程安排第五部分:介紹數(shù)據(jù)持久層利器(HIbernate)J課程安排第六部分:介紹軟件測試與部署借助Junit的單元測試借助Ant的自動部署J2EE架構(gòu)設(shè)計U

3、ML軟件工程組織課程安排第六部分:介紹軟件測試與部署J2EE架構(gòu)設(shè)計UML軟實例架構(gòu)J2EE架構(gòu)設(shè)計UML軟件工程組織實例架構(gòu)J2EE架構(gòu)設(shè)計UML軟件工程組織層次介紹實例分為四層:通過Struts實現(xiàn)UI層通過Spring實現(xiàn)業(yè)務(wù)層通過Hibernate實現(xiàn)數(shù)據(jù)持久層傳輸于各層的域?qū)ο髮覬2EE架構(gòu)設(shè)計UML軟件工程組織層次介紹實例分為四層:J2EE架構(gòu)設(shè)計UML軟件工程組織結(jié)構(gòu)優(yōu)點通過成熟的開源產(chǎn)品搭建層次清晰性能穩(wěn)定的系統(tǒng)架構(gòu)。層與層之間松散耦合,增加代碼重用率,提高開發(fā)效率。每一層充當各自具體任務(wù),便于團隊分工和后期維護。穩(wěn)健的架構(gòu)能承受業(yè)務(wù)的擴展,不至于使項目失控。J2EE架構(gòu)設(shè)計U

4、ML軟件工程組織結(jié)構(gòu)優(yōu)點通過成熟的開源產(chǎn)品搭建層次清晰性能穩(wěn)定的系統(tǒng)架構(gòu)。JUI Layer UI是User Interface的縮寫,這一層是面向用戶的界面,充當與用戶互動的角色。即接受用戶請求作出響應(yīng)。實現(xiàn)這一功能最佳經(jīng)驗即MVC模式,實例中該層借助Struts實現(xiàn),Struts本身就是MVC思想的產(chǎn)物。 J2EE架構(gòu)設(shè)計UML軟件工程組織UI Layer UI是User Interface的縮寫UI LayerStruts提供ActionFrom來封裝與用戶互動的數(shù)據(jù)元素。Struts提供Action來接受用戶請求與發(fā)生響應(yīng)動作。Struts提供ValidatorPlugIn來進行UI驗

5、證。J2EE架構(gòu)設(shè)計UML軟件工程組織UI LayerStruts提供ActionFrom來封裝與Business Layer具體的業(yè)務(wù)邏輯通常導(dǎo)致代碼的高度耦合,因此我們將業(yè)務(wù)邏輯分為單獨的一層,其目的也是希望通過層,來降低它與系統(tǒng)其他部分的耦合度。該層借助Spring可以達到更好的效果。通過Spring的IOC模式來裝配業(yè)務(wù)組件,如,DAO對象。使系統(tǒng)更具擴展性。通過Spring AOP(面向方面)思想,來集中處理具體業(yè)務(wù),如事務(wù)管理,使代碼更為簡潔,增加復(fù)用,提高開發(fā)效率。J2EE架構(gòu)設(shè)計UML軟件工程組織Business Layer具體的業(yè)務(wù)邏輯通常導(dǎo)致代碼的高Persistence

6、Layer 在傳統(tǒng)的系統(tǒng)開發(fā)中該層占據(jù)大部分的開發(fā)時間,且隨著需求的變更功能的修改,逐漸變得難以控制,特別是表結(jié)構(gòu)的變化可能導(dǎo)致整個系統(tǒng)大動干戈。 在實例中我們借助Hibernate,利用其持久化機制和CRUD封裝來減少代碼開發(fā)量和其他層次的耦合度。 J2EE架構(gòu)設(shè)計UML軟件工程組織Persistence Layer 在傳統(tǒng)的系統(tǒng)開發(fā)中該層Domain Layer該層應(yīng)該說是ORM思想的產(chǎn)物,ORM用對象關(guān)聯(lián)數(shù)據(jù)表,允許數(shù)據(jù)表中數(shù)據(jù)放入對象,也允許對象中數(shù)據(jù)更新到數(shù)據(jù)表,我們將這些對象的集合歸為一個專門的層次即Domain Layer。域?qū)ο蟪袚鲗又g數(shù)據(jù)通信的載體。實際上域?qū)ο笠彩且粋€完

7、完全全的業(yè)務(wù)對象,如User對象、Book對象。通過對業(yè)務(wù)的對象化,這有利于業(yè)務(wù)邏輯的重用。J2EE架構(gòu)設(shè)計UML軟件工程組織Domain Layer該層應(yīng)該說是ORM思想的產(chǎn)物,OR系統(tǒng)結(jié)構(gòu)-回顧將系統(tǒng)進行如上的分成,從理論上可以讓其承擔各自職責,UI層提供友好的用戶交互、業(yè)務(wù)層處理具體問題領(lǐng)域邏輯、持久層完成于數(shù)據(jù)庫讀取存儲、域模型承擔數(shù)據(jù)傳輸?shù)妮d體。將一個復(fù)雜的應(yīng)用領(lǐng)域細分成諸多最小單元,然后進行串聯(lián)、組合。使得一個應(yīng)用領(lǐng)域的實現(xiàn)過程中,最小單元達到最大復(fù)用。J2EE架構(gòu)設(shè)計UML軟件工程組織系統(tǒng)結(jié)構(gòu)-回顧將系統(tǒng)進行如上的分成,從理論上可以讓其承擔各Spring-簡介springFram

8、ework是種非侵入式輕量級框架,允許自由選擇和組裝各部分功能,也提供了和其他很多軟件集成的接口,如與Hibernate、Struts的集成。 Spring主要功能有 Dependency Injection、Spring Context、 Spring AOP、Spring ORM、Spring DAO、Spring MVC。J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-簡介springFramework是種非侵入Spring-為什么使用Spring利用延時注入思想組裝代碼,提高系統(tǒng)擴展性,靈活性,實現(xiàn)插件式編程。利用AOP思想,集中處理業(yè)務(wù)邏輯,減少重復(fù)代碼,構(gòu)建優(yōu)雅的解決方案。利用Hi

9、bernateTransactionManager類封裝Hibernate事務(wù)管理,其是AOP思想的典型運用,使持久層操作代碼簡潔精悍。J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-為什么使用Spring利用延時注入思想組裝代碼Spring-搭建Web應(yīng)用環(huán)境下載springFramework最新版本,將其下的*.jar 拷貝到項目lib中,并引用。在Web.xml中配置spring的啟動方式:Listener方式或Servlet方式。設(shè)置Spring配置文件。通常在系統(tǒng)運行前完Spring成初始化工作,因此在Web.xml中配置一個初始化Servlet。J2EE架構(gòu)設(shè)計UML軟件工程組織S

10、pring-搭建Web應(yīng)用環(huán)境下載springFramewSpring-搭建Web應(yīng)用環(huán)境J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-搭建Web應(yīng)用環(huán)境J2EE架構(gòu)設(shè)計UML軟件工Spring-搭建Web應(yīng)用環(huán)境J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-搭建Web應(yīng)用環(huán)境J2EE架構(gòu)設(shè)計UML軟件工Spring-搭建Web應(yīng)用環(huán)境J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-搭建Web應(yīng)用環(huán)境J2EE架構(gòu)設(shè)計UML軟件工Spring-Factory模式在實際開發(fā)中會經(jīng)常用到工廠模式,其完成的功能是使外部調(diào)用類不需關(guān)心具體實現(xiàn)類,這樣非常適合在同一個事物類型具有多種不同實現(xiàn)的情況下使

11、用。要實現(xiàn)工廠模式我們必須設(shè)計AbstractFactory類AbstractProduct類,為了實現(xiàn)靈活性還可能用反射機制構(gòu)建Product實體。在得到具體實現(xiàn)類的時候也必須通過工廠類完成,如圖所示:J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-Factory模式在實際開發(fā)中會經(jīng)常用到工廠模Spring-Factory模式J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-Factory模式J2EE架構(gòu)設(shè)計UML軟件工Spring-依賴注入Spring的依賴注入能達到工廠模式的同樣的效果,但其實現(xiàn)卻優(yōu)雅很多??慈缦麓a:在Spring配置文件中配置Bean實現(xiàn)代碼:Product a = X

12、XX.getBean(“Product);這樣即得到了ProductA的實例,代碼中只硬編碼了Product接口。是不是讓你興奮了?J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-依賴注入Spring的依賴注入能達到工廠模式的Spring-依賴注入Spring還允許以下三種方式實現(xiàn)依賴注入:設(shè)值注入接口注入構(gòu)造函數(shù)注入J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-依賴注入Spring還允許以下三種方式實現(xiàn)依賴Spring-依賴注入我們重點講述設(shè)值注入方式,先來看看通過設(shè)值注入能給實際開發(fā)帶來什么好處.下圖是不是讓你有所領(lǐng)悟?J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-依賴注入我們重點講述

13、設(shè)值注入方式,先來看看通過Spring-演練我們利用設(shè)值注入實現(xiàn)一個簡單的計算器,讓它實現(xiàn)兩個數(shù)的加法或減法運算。類圖如下:Product實現(xiàn)類中與具體實現(xiàn)類無關(guān)聯(lián)、無依賴,通過外部配置即可自由切換實現(xiàn)類,美妙!J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-演練我們利用設(shè)值注入實現(xiàn)一個簡單的計算器,讓它Spring-演練假設(shè)我們要實現(xiàn)兩個數(shù)相加,則配置如下(如果需要實現(xiàn)兩個數(shù)相減,則將注釋的algorithm Bean替換掉當前的即可):J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-演練假設(shè)我們要實現(xiàn)兩個數(shù)相加,則配置如下(如果Spring-演練測試代碼如下,根據(jù)具體的實現(xiàn)類不同將得到兩個

14、數(shù)相應(yīng)運算的結(jié)果。J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-演練測試代碼如下,根據(jù)具體的實現(xiàn)類不同將得到兩Spring-依賴注入總結(jié)從演練的例子可以看出Spring提供的依賴注入思想能讓代碼之間依賴性降低,轉(zhuǎn)而交給配置文件進行外部配置,這樣對于需求變化、后期維護、功能擴展帶來便利。Spring是一種工具,更是一種思想,開發(fā)人員可以在設(shè)計代碼時發(fā)揮無限想象,挖掘出最適應(yīng)項目代碼組織形式。J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-依賴注入總結(jié)從演練的例子可以看出SpringSpring-AOP模式AOP的全稱為Aspect Oriented Programming,譯為“面向方面編程”

15、或“面向切面編程”,與熟悉的OOP(面向?qū)ο缶幊蹋┧枷胨P(guān)注的目標有本質(zhì)上的區(qū)別,AOP是針對具體業(yè)務(wù)領(lǐng)域、業(yè)務(wù)邏輯;OOP針對業(yè)務(wù)對象。Spring中事務(wù)管理機制就是AOP的一個具體運用。利用此機制省去了我們在每個具體實現(xiàn)類中去進行事務(wù)管理的編碼,而將這一切交給Spring提供的事務(wù)代理實現(xiàn)類erceptor.TransactionProxyFactoryBean。J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-AOP模式AOP的全稱為Aspect OriSpring-AOP模式在講述AOP運用之前我們先來了解下AOP實現(xiàn)原理。Spring的Dependency Injection和AOP都

16、是某一設(shè)計模式的經(jīng)典應(yīng)用及放大。也許通過Spring的事物管理機制你已經(jīng)將AOP的實現(xiàn)原理與代理模式聯(lián)系在一起了。的確如此,讓我們先看看代理模式的思想。J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-AOP模式在講述AOP運用之前我們先來了解下ASpring-Proxy代理模式的思想是:不讓外部直接訪問具體目標,而是通過一個代理類才能訪問具體目標。類似在具體目標與外部之間放置一道“隔離層“,所有與具體目標的通信均需通過這道”隔離層”來傳送請求和返回狀態(tài)。這樣“隔離層“就能掌控訪問具體目標的前前后后。如果我們需要在訪問具體目標前或后加上一致的處理邏輯,無疑代理模式最為適合。就如事物管理。J2EE

17、架構(gòu)設(shè)計UML軟件工程組織Spring-Proxy代理模式的思想是:不讓外部直接訪問具Spring-Proxy下面演練用Proxy模式來實現(xiàn)JDBC事務(wù)管理, 先看類圖:先編寫Dao接口,讓所有訪問數(shù)據(jù)庫的類和代理類都繼承該接口,然后在代理類中傳入要訪問的具體類。這樣就能通過代理類完成對具體實例的訪問。J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-Proxy下面演練用Proxy模式來實現(xiàn)JDSpring-ProxyJ2EE架構(gòu)設(shè)計UML軟件工程組織Spring-ProxyJ2EE架構(gòu)設(shè)計UML軟件工程組織Spring-ProxyJ2EE架構(gòu)設(shè)計UML軟件工程組織Spring-ProxyJ2E

18、E架構(gòu)設(shè)計UML軟件工程組織Spring-Proxy從DaoImpl類中代碼可以看出我們沒有編寫事務(wù)的控制代碼,而是轉(zhuǎn)交給代理類完成,這樣訪問數(shù)據(jù)庫的具體類不需要自己關(guān)心事務(wù)處理。讓某一業(yè)務(wù)邏輯集中實現(xiàn),能避免重復(fù)編寫代碼,方便修改和維護。上面的例子有兩個缺陷局限一個相同的方法名。代理類繼承一個具體接口,即使有類似功能的類,當接口改變,需新建繼承其接口的代理類。J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-Proxy從DaoImpl類中代碼可以看出我們Spring-Proxy上面例子的缺陷可以通過Java的反射機制動態(tài)創(chuàng)建實例、方法得到解決。通過該思想,JDK1.3以上版本實現(xiàn)了動態(tài)代理(D

19、ynamic Proxy)。說到這里也許你已經(jīng)明白Spring Aop機制是基于Dynamic Proxy來實現(xiàn)的。下面讓我們來看看通過Spring Aop怎樣來實現(xiàn)事務(wù)管理。J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-Proxy上面例子的缺陷可以通過Java的反射Spring-TransactionManageJ2EE架構(gòu)設(shè)計UML軟件工程組織Spring-TransactionManageJ2EE架構(gòu)Spring-TransactionManageJ2EE架構(gòu)設(shè)計UML軟件工程組織Spring-TransactionManageJ2EE架構(gòu)Spring-AOP利用事務(wù)管理的例子,我們分

20、析下AOP的概念:方面(Aspect)連接點(JoinPoint)通知(Advice)切入點(PointCut)目標對象(TargetObject)J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-AOP利用事務(wù)管理的例子,我們分析下AOP的概Spring-AOPJ2EE架構(gòu)設(shè)計UML軟件工程組織Spring-AOPJ2EE架構(gòu)設(shè)計UML軟件工程組織Spring-AOPJ2EE架構(gòu)設(shè)計UML軟件工程組織Spring-AOPJ2EE架構(gòu)設(shè)計UML軟件工程組織Spring-AOP方面:我們將業(yè)務(wù)組件的事務(wù)管理部分提取出來,被提取的層面就稱為“方面“,如圖中的事務(wù)管理。方面的意義在于將業(yè)務(wù)邏輯中復(fù)雜問

21、題分離成不同層面,使其實現(xiàn)統(tǒng)一集中的管理。連接點:程序在執(zhí)行過程中明確的點,如execute()方法。通知:在特定的連接點執(zhí)行的動作。如在執(zhí)行execute()方法前的預(yù)處理,在執(zhí)行完execute()方法后的后處理。J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-AOP方面:我們將業(yè)務(wù)組件的事務(wù)管理部分提取出Spring-AOP切入點:連接點的集合,指定在何時引發(fā)通知。如事務(wù)例子中配置了所有execute.*的方法為切入點。目標對象:包含連接點的對象,也稱為被代理的對象。如圖中的業(yè)務(wù)組件。J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-AOP切入點:連接點的集合,指定在何時引發(fā)通知Sprin

22、g-AOP下面我們結(jié)合實例項目,看看借助Spring為程序結(jié)構(gòu)、代碼組織、業(yè)務(wù)處理所帶來的優(yōu)越。J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-AOP下面我們結(jié)合實例項目,看看借助SprinSpring-思考在實際項目中哪些業(yè)務(wù)需求適合借助AOP思想實現(xiàn)?J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-思考在實際項目中哪些業(yè)務(wù)需求適合借助AOP思想Spring-案例習題請利用Spring IOC機制,完成項目中一組類的改造。請利用Spring AOP機制,設(shè)計一個能統(tǒng)一集中處理一組業(yè)務(wù)需求的類。J2EE架構(gòu)設(shè)計UML軟件工程組織Spring-案例習題請利用Spring IOC機制,完成項Log

23、4j-介紹log4j是用于java語言的日志記錄工具,一個完整的軟件,日志是必不可少的。項目開發(fā)中日志記錄多種多樣,有打印在控制臺中,有記錄成文本文件,有保存到數(shù)據(jù)庫中等。日志信息也許需要分為調(diào)試日志,運行日志,異常日志等。這些雖然實現(xiàn)簡單,但是也繁瑣。下面將介紹用log4j來實現(xiàn)日志記錄。J2EE架構(gòu)設(shè)計UML軟件工程組織Log4j-介紹log4j是用于java語言的日志記錄工具Log4j-搭建環(huán)境下載log4j,/log4j,將log4j.jar拷貝到項目的lib中, 并引用。建立log4j的配置文件,Log4j.xml 或 LpertiesJ2EE架構(gòu)設(shè)計UML軟件工程組織Log4j-搭

24、建環(huán)境下載log4j,http:/loggiLog4j-演練我們結(jié)合實例項目代碼來演示Log4j的使用及帶來的便利。J2EE架構(gòu)設(shè)計UML軟件工程組織Log4j-演練我們結(jié)合實例項目代碼來演示Log4j的使用及Struts-介紹Struts是用于實現(xiàn)Web項目中UI層的開源產(chǎn)品,是MVC模式的經(jīng)典實現(xiàn)案例。它屬于Apache組織中的開源產(chǎn)品之一,之所以使用Struts:Struts將業(yè)務(wù)數(shù)據(jù)、頁面顯示、動作處理進行分離,這有利各部分的維護Struts采用Front Controller模式來實現(xiàn)動作處理,讓所有的動作請求都是經(jīng)過一個統(tǒng)一入口, 然后進行分發(fā)。這樣方便我們在入口中加入全局控制代碼

25、的實現(xiàn),如安全控制、日志管理、國際化 編碼等J2EE架構(gòu)設(shè)計UML軟件工程組織Struts-介紹Struts是用于實現(xiàn)Web項目中UI層Struts-介紹通過Struts提供的ActionForm封裝web form 中的元素,使重用web表單成為可能借助Struts Validator框架幫助完成web層的驗證工作,通常情況下我們不用再去為每個web頁面寫其驗證代碼,只需通 過配置即可實現(xiàn)。這也減少了我們的開發(fā)量,由于驗證代碼的集中管理,也為維護帶來便利J2EE架構(gòu)設(shè)計UML軟件工程組織Struts-介紹通過Struts提供的ActionFormStruts-快速入門我們結(jié)合實例來講解Str

26、uts的應(yīng)用:下載Struts,將其相關(guān)jar包引用到Web項目在web項目的web.xml中配置Action影射,將相應(yīng)請求動作交給Struts提供的ActionServlet類進行統(tǒng)一控制在web.xm配置所需要用到的的Struts標簽文件建立ActionForm、Action建立視圖文件J2EE架構(gòu)設(shè)計UML軟件工程組織Struts-快速入門我們結(jié)合實例來講解Struts的應(yīng)用:Struts-ActionFromActionFrom是用來傳輸表單數(shù)據(jù)的對象,通過配置文件可以關(guān)聯(lián)到對應(yīng)的Action,實現(xiàn)在UI層與業(yè)務(wù)層之間的數(shù)據(jù)傳輸。 實現(xiàn)機制:Struts提供了一個org.apache

27、.struts.action.ActionForm類,里面實現(xiàn)了將請求表單中的元素賦值給其具體的 實現(xiàn)類屬性。因此自定義ActionForm類時,只需繼承該類即可。在自定義ActionForm類時請保證其屬性名稱與所對應(yīng) 表單名稱一致。J2EE架構(gòu)設(shè)計UML軟件工程組織Struts-ActionFromActionFrom是用Struts-ActionFrom當觸發(fā)Action時,通過配置文件匹配到對應(yīng)ActionFrom實例,以參數(shù)形式傳入。ActionForm的實現(xiàn)雖然簡單,但是隨著界面的增加,ActionForm類也會增加,造成代碼膨脹。在Struts1.1以上版本提供了 ActionF

28、orm的另一個實現(xiàn)類,org.apache.struts.action.DynaActionForm,該類充當所有ActionForm的代理類,只需在配置ActionFrom時指定用該類實現(xiàn)即可J2EE架構(gòu)設(shè)計UML軟件工程組織Struts-ActionFrom當觸發(fā)Action時,通過Struts-ActionAction充當了控制器的角色,每個請求都會觸發(fā)到Action類,我們在這里處理邏輯業(yè)務(wù),分發(fā)數(shù)據(jù),鏈接轉(zhuǎn)向。 其實現(xiàn)機制:在web.xml配置影射規(guī)則,符合其影射條件的請求都會交給org.apache.struts.action.ActionServlet類處理, 在該類中將會實現(xiàn)o

29、rg.apache.struts.action.Action類中的相應(yīng)方法。在自定義Action類時只需繼承該類, 實現(xiàn)execute方法, 即可讓自定義的Action得到觸發(fā)。J2EE架構(gòu)設(shè)計UML軟件工程組織Struts-ActionAction充當了控制器的角色,每Struts-Actionexecute()方法中 ActionMapping、ActionForm實例通過讀取配置文件獲得。J2EE架構(gòu)設(shè)計UML軟件工程組織Struts-Actionexecute()方法中 ActiStruts-客戶端驗證在UI中對用戶提交的數(shù)據(jù)作驗證是必不可少的,Struts也提供了相應(yīng)的實現(xiàn)。下面將結(jié)

30、合實例演示一個登錄界面的校驗:申明校驗實現(xiàn)類,Struts中校驗功能是通過org.apache.struts.validator.ValidatorPlugIn類實現(xiàn)。完善校驗規(guī)則文件。在validator-rules.xml中定義了常用的客戶端驗證規(guī)則,如,不為空,只允許 數(shù)字等。特殊的實現(xiàn)需要在此擴充J2EE架構(gòu)設(shè)計UML軟件工程組織Struts-客戶端驗證在UI中對用戶提交的數(shù)據(jù)作驗證是必Struts-客戶端驗證定義要被驗證的表單信息建立存放驗證提示信息的資源文件在界面設(shè)置觸發(fā)條件,如onsubmit時響應(yīng)驗證動作J2EE架構(gòu)設(shè)計UML軟件工程組織Struts-客戶端驗證定義要被驗證的表

31、單信息J2EE架構(gòu)設(shè)Hiernate-介紹對象到關(guān)系型數(shù)據(jù)映射(ORM)是架構(gòu)中熱門的話題,人們希望用ORM工具從單調(diào)的SQL中解脫出來, 規(guī)范數(shù)據(jù)層的開發(fā),提高開發(fā)效率。Hibernate也是實現(xiàn)這樣的功能。Hibernate性能穩(wěn)定、參考文檔齊全,有專門的組織提供升級與技術(shù)支持。J2EE架構(gòu)設(shè)計UML軟件工程組織Hiernate-介紹對象到關(guān)系型數(shù)據(jù)映射(ORM)是架構(gòu)中Hibernate-搭建環(huán)境從下載hibernate最新發(fā)行包。 然后將hibernate相關(guān)jar包加入項目lib,并引用。影射文件。影射類。加載配置信息。J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-搭建環(huán)境從

32、www.hibernate.oHiernate-培訓(xùn)內(nèi)容下面我們將以此介紹關(guān)于Hiernate的如下運用:表與表之間關(guān)聯(lián)操作多數(shù)據(jù)庫操作事務(wù)管理DAO模式與Spring結(jié)合使用輔助功能介紹J2EE架構(gòu)設(shè)計UML軟件工程組織Hiernate-培訓(xùn)內(nèi)容下面我們將以此介紹關(guān)于HiernaHibernate-one-to-one一對一關(guān)聯(lián)有兩種方式:主鍵關(guān)聯(lián)主鍵關(guān)聯(lián)不需借助外部字段,直接通過兩個表的主鍵關(guān)聯(lián),因此必須保證兩個表的主鍵值一致。通常借助foreign標識符生成器策略。唯一外鍵關(guān)聯(lián)在主動方加入外鍵進行關(guān)聯(lián),這樣主動方與被動方的影射關(guān)系實際上就成了多對一的關(guān)聯(lián)。J2EE架構(gòu)設(shè)計UML軟件工程組

33、織Hibernate-one-to-one一對一關(guān)聯(lián)有兩種方式Hibernate- one-to-one-主鍵關(guān)聯(lián)J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate- one-to-one-主鍵關(guān)聯(lián)J2EEHibernate- one-to-one-主鍵關(guān)聯(lián)J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate- one-to-one-主鍵關(guān)聯(lián)J2EEHibernate- one-to-one-主鍵關(guān)聯(lián)J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate- one-to-one-主鍵關(guān)聯(lián)J2EEHibernate- one-to-one-外鍵關(guān)聯(lián)J2EE架構(gòu)設(shè)計UML軟件工程組織Hiberna

34、te- one-to-one-外鍵關(guān)聯(lián)J2EEHibernate- one-to-one-外鍵關(guān)聯(lián)J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate- one-to-one-外鍵關(guān)聯(lián)J2EEHibernate- one-to-one-外鍵關(guān)聯(lián)J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate- one-to-one-外鍵關(guān)聯(lián)J2EEHibernate-many-to-many表之間多對多的關(guān)聯(lián),通常借助中間表來實現(xiàn),在實際的項目開發(fā)中也會經(jīng)常碰到,假設(shè)實現(xiàn)一個員工薪金計算,Employee表存放員工信息,Welfare表存放福利項目信息,Salary表存放員工薪金信息,一個員工可以擁有多項

35、福利,一項福利可以被多個員工擁有。Salary表用來保存這些關(guān)聯(lián)關(guān)系。J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-many-to-many表之間多對多的Hibernate-many-to-manyJ2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-many-to-manyJ2EE架構(gòu)設(shè)計Hibernate-many-to-manyJ2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-many-to-manyJ2EE架構(gòu)設(shè)計Hibernate-many-to-manyJ2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-many-to-manyJ2EE架構(gòu)設(shè)計Hibernate-ma

36、ny-to-manyJ2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-many-to-manyJ2EE架構(gòu)設(shè)計Hibernate-復(fù)合主鍵復(fù)合主鍵是由多個字段一起組成,以此來構(gòu)成唯一鍵值。假設(shè)實現(xiàn)一個游戲的注冊功能。User表來存放用戶信息,Game表來存放游戲信息,Register表存放注冊信息。一個人可以注冊多個不同游戲,但是同一個人不允許重復(fù)注冊同一個游戲。J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-復(fù)合主鍵復(fù)合主鍵是由多個字段一起組成,Hibernate-復(fù)合主鍵J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-復(fù)合主鍵J2EE架構(gòu)設(shè)計UML軟件工程組Hibernat

37、e-復(fù)合主鍵J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-復(fù)合主鍵J2EE架構(gòu)設(shè)計UML軟件工程組Hibernate-復(fù)合主鍵J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-復(fù)合主鍵J2EE架構(gòu)設(shè)計UML軟件工程組Hibernate-復(fù)合主鍵J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-復(fù)合主鍵J2EE架構(gòu)設(shè)計UML軟件工程組Hibernate-與Spring結(jié)合使用Spring Framework考慮到了與hibernate的集成,為此提供了一些非常好用的類:org.springframework.orm.hibernate.LocalSessionFactoryBea

38、,封裝Hibernate的SessionFactory。HibernateTransactionManager,封裝hibernate事務(wù)管理其次,Spring讓Hibernate DAO層的開發(fā)變得更為優(yōu)雅,下面一一介紹。J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-與Spring結(jié)合使用Spring FHibernate-配置SessionFactoryJ2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-配置SessionFactoryJ2EHibernate-配置SessionFactoryJ2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-配置SessionFactoryJ

39、2EHibernate-配置SessionFactory將SessionFactory配置在Spring中最大的好處體現(xiàn)在當項目中需要多個不同的SessionFactory時所帶來的便利,如,操作多個不同數(shù)據(jù)庫,我們需要分別建立不同的datasource和SessionFactory,這樣在DAO操作代碼中需要判斷該用哪個SessionFactory,而我們借助Spring可以讓具體DAO脫離具體SessionFactory,也就是說,DAO層完全可以不用關(guān)心具體數(shù)據(jù)源。J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-配置SessionFactory將SHibernate-many Da

40、tabaseJ2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-many DatabaseJ2EE架構(gòu)設(shè)Hibernate-many DatabaseJ2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-many DatabaseJ2EE架構(gòu)設(shè)Hibernate-many DatabaseJ2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-many DatabaseJ2EE架構(gòu)設(shè)Hibernate-many DatabaseJ2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-many DatabaseJ2EE架構(gòu)設(shè)Hibernate-many DatabaseJ2EE架構(gòu)設(shè)計UML軟件工

41、程組織Hibernate-many DatabaseJ2EE架構(gòu)設(shè)Hibernate-DAO模式在業(yè)務(wù)類中既寫邏輯,又寫與底層存儲媒介交互代碼,使業(yè)務(wù)類變得復(fù)雜,且不便于維護,因此我們用DAO模式將業(yè)務(wù)邏輯與底層存儲媒介交互分離,DAO的英文全稱為Data Access Object。從實例的架構(gòu)圖中可以看出,DAO充當業(yè)務(wù)層與持久層的交互入口。J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-DAO模式在業(yè)務(wù)類中既寫邏輯,又寫與底Hibernate-DAO模式假設(shè)實現(xiàn)一個用戶信息添加、修改、刪除、查找的功能。我們將這些調(diào)用持久層CRUD的操作,封裝在DAO對象中;將接收UI數(shù)據(jù)、邏輯判斷

42、封裝在業(yè)務(wù)管理類中。其代實現(xiàn)碼如下:J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-DAO模式假設(shè)實現(xiàn)一個用戶信息添加、修Hibernate-DAO模式J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-DAO模式J2EE架構(gòu)設(shè)計UML軟件工程Hibernate-DAO模式J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-DAO模式J2EE架構(gòu)設(shè)計UML軟件工程Hibernate-DAO模式-思考示例代碼中BookDao類中繼承了HibernateDaoSupport,BookManager類設(shè)置了注入DAO的屬性,請思考如何在Spring配置文件中進行配置,使示例代碼正常運行?J

43、2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-DAO模式-思考示例代碼中BookDaoHibernate-事務(wù)管理Hibernate中事務(wù)管理分為兩種:基于JDBC的事務(wù)管理,簡單封裝了JDBC的事務(wù)管理,因此其作用范圍在當前JDBC連接中,也就是說只能在當前Session中有效。基于JTA的事務(wù)管理,利用容器管理,可以跨越多個Session。J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-事務(wù)管理Hibernate中事務(wù)管理分Hibernate-事務(wù)管理J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-事務(wù)管理J2EE架構(gòu)設(shè)計UML軟件工程組Hibernate-事務(wù)管理上面的

44、示例代碼展示了慣用的事務(wù)管理書寫格式,在講述Spring AOP 應(yīng)用的章節(jié),曾講述了利用AOP思想進行事務(wù)的集中管理,同樣對于Hibernate的事務(wù)管理也可以利用此思想,下面讓我們看看如何使用:J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-事務(wù)管理上面的示例代碼展示了慣用的事務(wù)Hibernate-事務(wù)管理J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-事務(wù)管理J2EE架構(gòu)設(shè)計UML軟件工程組Hibernate-事務(wù)管理通過借助Spring AOP來管理事務(wù),如下代碼即可實現(xiàn)與在DAO類中書寫事務(wù)管理代碼同樣的功能:J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-事務(wù)管理

45、通過借助Spring AOP來Hibernate-輔助工具在編寫數(shù)據(jù)庫影射文件與影射類時,可以借助一些工具來生成,減少工作量:Xdoclet:通過影射類中的Xdoclet標簽,自動生成影射文件。Middlegen:通過數(shù)據(jù)表生成影射文件。Hbm2java:通過帶Xdoclet標簽的映射文件生成映射類。J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-輔助工具在編寫數(shù)據(jù)庫影射文件與影射類時Hibernate-輔助工具-Xdocletxdoclet依靠標簽完成與影射文件的同步,在實際開發(fā)中可以將影射類與影射文件的同步工作加入Ant任務(wù)中,給開發(fā)帶來便利。接下來我們根據(jù)實例項目演示其使用。J2EE架構(gòu)設(shè)計UML軟件工程組織Hibernate-輔助工具-XdocletxdocletHibernate-輔

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論