已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
理工大學(xué)英中文翻譯材料英文題目英文題目英文題目英文題目THECOMMUNITYOFSPORTSENTHUSIASTS中文題目中文題目中文題目中文題目運(yùn)動(dòng)愛(ài)好者社區(qū)運(yùn)動(dòng)愛(ài)好者社區(qū)運(yùn)動(dòng)愛(ài)好者社區(qū)運(yùn)動(dòng)愛(ài)好者社區(qū)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)生姓名指導(dǎo)教師二一年六月JAVAJAVA是一種簡(jiǎn)單的,面向?qū)ο蟮?,分布式的,解釋型的,健壯安全的,結(jié)構(gòu)中立的,可移植的,性能優(yōu)異、多線程的動(dòng)態(tài)語(yǔ)言。JAVA語(yǔ)言的主要好處是,JAVA應(yīng)用程序可以跨硬件平臺(tái)和操作系統(tǒng)進(jìn)行移植這是因?yàn)槊總€(gè)平臺(tái)上安裝的JVM都可以理解同樣的字節(jié)碼。JAVA語(yǔ)言和平臺(tái)的可伸縮性非常強(qiáng)。在低端,JAVA語(yǔ)言是第一批支持企業(yè)開(kāi)放標(biāo)準(zhǔn)的技術(shù)之一,支持使用XML和WEB服務(wù)跨業(yè)務(wù)線共享信息和應(yīng)用程序。JAVA平臺(tái)有三個(gè)版本,這使軟件開(kāi)發(fā)人員、服務(wù)提供商和設(shè)備生產(chǎn)商可以針對(duì)特定的市場(chǎng)進(jìn)行開(kāi)發(fā)1JAVASE以前稱為J2SE。它允許開(kāi)發(fā)和部署在桌面、服務(wù)器、嵌入式環(huán)境和實(shí)時(shí)環(huán)境中使用的JAVA應(yīng)用程序。JAVASE包含了支持JAVAWEB服務(wù)開(kāi)發(fā)的類,并為JAVAPLATFORM,ENTERPRISEEDITION(JAVAEE)提供基礎(chǔ)。大多數(shù)JAVA開(kāi)發(fā)人員使用JAVASE5,也稱為JAVA50或“TIGER”。2JAVAEE以前稱為J2EE。企業(yè)版本幫助開(kāi)發(fā)和部署可移植、健壯、可伸縮且安全的服務(wù)器端JAVA應(yīng)用程序。JAVAEE是在JAVASE的基礎(chǔ)上構(gòu)建的,它提供WEB服務(wù)、組件模型、管理和通信API,可以用來(lái)實(shí)現(xiàn)企業(yè)級(jí)的面向服務(wù)體系結(jié)構(gòu)和WEB20應(yīng)用程序。3JAVAME以前稱為J2ME。JAVAME為在移動(dòng)設(shè)備和嵌入式設(shè)備上運(yùn)行的應(yīng)用程序提供一個(gè)健壯且靈活的環(huán)境。JAVAME包括靈活的用戶界面、健壯的安全模型、許多內(nèi)置的網(wǎng)絡(luò)協(xié)議以及對(duì)可以動(dòng)態(tài)下載的連網(wǎng)和離線應(yīng)用程序的豐富支持?;贘AVAME規(guī)范的應(yīng)用程序只需編寫(xiě)一次,就可以用于許多設(shè)備,而且可以利用每個(gè)設(shè)備的本機(jī)功能。JAVA語(yǔ)言是簡(jiǎn)單的。JAVA語(yǔ)言的語(yǔ)法與C語(yǔ)言和C語(yǔ)言很接近,JAVA丟棄了C中很少使用、難理解的的特性,如操作符重載、多繼承、自動(dòng)的強(qiáng)制類型轉(zhuǎn)換。JAVA語(yǔ)言不使用指針,并提供了自動(dòng)的廢料收集。JAVA語(yǔ)言是一個(gè)面向?qū)ο蟮摹AVA語(yǔ)言提供類、接口和繼承等原語(yǔ),為了簡(jiǎn)單起見(jiàn),只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實(shí)現(xiàn)機(jī)制(關(guān)鍵字為IMPLEMENTS)。JAVA語(yǔ)言全面支持動(dòng)態(tài)綁定,而C語(yǔ)言只對(duì)虛函數(shù)使用動(dòng)態(tài)綁定??傊?,JAVA語(yǔ)言是一個(gè)純的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言。JAVA語(yǔ)言是分布式的。JAVA語(yǔ)言支持INTERNET應(yīng)用的開(kāi)發(fā),JAVA的RMI遠(yuǎn)程方法激活機(jī)制也是開(kāi)發(fā)分布式應(yīng)用的重要手段。JAVA語(yǔ)言是健壯的。JAVA的強(qiáng)類型機(jī)制、異常處理、廢料的自動(dòng)收集等是JAVA程序健壯性的重要保證。JAVA語(yǔ)言是安全的。JAVA通常被用在網(wǎng)絡(luò)環(huán)境中,為此,JAVA提供了一個(gè)安全機(jī)制以防惡意代碼的攻擊。JAVA語(yǔ)言是可移植的。這種可移植性來(lái)源于體系結(jié)構(gòu)中立性。JAVA系統(tǒng)本身也具有很強(qiáng)的可移植性。JAVA語(yǔ)言是多線程的。在JAVA語(yǔ)言中,線程是一種特殊的對(duì)象,它必須由THREAD類或其子(孫)類來(lái)創(chuàng)建。JAVA語(yǔ)言支持多個(gè)線程的同時(shí)執(zhí)行,并提供多線程之間的同步機(jī)制(關(guān)鍵字為SYNCHRONIZED)。JAVA語(yǔ)言的優(yōu)良特性使得JAVA應(yīng)用具有無(wú)比的健壯性和可靠性,這也減少了應(yīng)用系統(tǒng)的維護(hù)費(fèi)用。JAVA對(duì)對(duì)象技術(shù)的全面支持和JAVA平臺(tái)內(nèi)嵌的API能縮短應(yīng)用系統(tǒng)的開(kāi)發(fā)時(shí)間并降低成本。JAVA的編譯一次,到處可運(yùn)行的特性使得它能夠提供一個(gè)隨處可用的開(kāi)放結(jié)構(gòu)和在多平臺(tái)之間傳遞信息的低成本方式。HIBERNATEHIBERNATE是JDBC的輕量級(jí)的對(duì)象封裝。它是一個(gè)獨(dú)立的對(duì)象持久層框架,和APPSERVER,和EJB沒(méi)有什么必然的聯(lián)系。HIBERNATE可以用在任何JDBC可以使用的場(chǎng)合,例如JAVA應(yīng)用程序的數(shù)據(jù)庫(kù)訪問(wèn)代碼,DAO接口的實(shí)現(xiàn)類,甚至可以是BMP里面的訪問(wèn)數(shù)據(jù)庫(kù)的代碼。從這個(gè)意義上來(lái)說(shuō),HIBERNATE和EB不是一個(gè)范疇的東西,也不存在非此即彼的關(guān)系。HIBERNATE是一個(gè)和JDBC密切關(guān)聯(lián)的框架,所以HIBERNATE的兼容性和JDBC驅(qū)動(dòng),和數(shù)據(jù)庫(kù)都有一定的關(guān)系,但是和使用它的JAVA程序,和APPSERVER沒(méi)有任何關(guān)系,也不存在兼容性問(wèn)題。HIBERNATE中提供了兩級(jí)CACHE,第一級(jí)別的緩存是SESSION級(jí)別的緩存,它是屬于事務(wù)范圍的緩存。這一級(jí)別的緩存由HIBERNATE管理的,一般情況下無(wú)需進(jìn)行干預(yù);第二級(jí)別的緩存是SESSIONFACTORY級(jí)別的緩存,它是屬于進(jìn)程范圍或群集范圍的緩存。這一級(jí)別的緩存可以進(jìn)行配置和更改,并且可以動(dòng)態(tài)加載和卸載。HIBERNATE還為查詢結(jié)果提供了一個(gè)查詢緩存,它依賴于第二級(jí)緩存。當(dāng)應(yīng)用程序調(diào)用SESSION的SAVE、UPDATE、SAVEORUPDATE、GET或LOAD,以及調(diào)用查詢接口的LIST、ITERATE或FILTER方法時(shí),如果在SESSION緩存中還不存在相應(yīng)的對(duì)象,HIBERNATE就會(huì)把該對(duì)象加入到第一級(jí)緩存中。當(dāng)清理緩存時(shí),HIBERNATE會(huì)根據(jù)緩存中對(duì)象的狀態(tài)變化來(lái)同步更新數(shù)據(jù)庫(kù)。SESSION為應(yīng)用程序提供了兩個(gè)管理緩存的方法EVICTOBJECTOBJ從緩存中清除參數(shù)指定的持久化對(duì)象。CLEAR清空緩存中所有持久化對(duì)象。HIBERNATE的二級(jí)緩存策略的一般過(guò)程如下1條件查詢的時(shí)候,總是發(fā)出一條SELECTFROMTABLE_NAMEWHERE(選擇所有字段)這樣的SQL語(yǔ)句查詢數(shù)據(jù)庫(kù),一次獲得所有的數(shù)據(jù)對(duì)象。2把獲得的所有數(shù)據(jù)對(duì)象根據(jù)ID放入到第二級(jí)緩存中。3當(dāng)HIBERNATE根據(jù)ID訪問(wèn)數(shù)據(jù)對(duì)象的時(shí)候,首先從SESSION一級(jí)緩存中查;查不到,如果配置了二級(jí)緩存,那么從二級(jí)緩存中查;查不到,再查詢數(shù)據(jù)庫(kù),把結(jié)果按照ID放入到緩存。4刪除、更新、增加數(shù)據(jù)的時(shí)候,同時(shí)更新緩存。HIBERNATE的二級(jí)緩存策略,是針對(duì)于ID查詢的緩存策略,對(duì)于條件查詢則毫無(wú)作用。為此,HIBERNATE提供了針對(duì)條件查詢的QUERYCACHE。HIBERNATE對(duì)象關(guān)系映射提供延遲的與非延遲的對(duì)象初始化。非延遲加載在讀取一個(gè)對(duì)象的時(shí)候會(huì)將與這個(gè)對(duì)象所有相關(guān)的其他對(duì)象一起讀取出來(lái)。這有時(shí)會(huì)導(dǎo)致成百的(如果不是成千的話)SELECT語(yǔ)句在讀取對(duì)象的時(shí)候執(zhí)行。這個(gè)問(wèn)題有時(shí)出現(xiàn)在使用雙向關(guān)系的時(shí)候,經(jīng)常會(huì)導(dǎo)致整個(gè)數(shù)據(jù)庫(kù)都在初始化的階段被讀出來(lái)了。當(dāng)然,你可以不厭其煩地檢查每一個(gè)對(duì)象與其他對(duì)象的關(guān)系,并把那些最昂貴的刪除,但是到最后,我們可能會(huì)因此失去了本想在ORM工具中獲得的便利。一級(jí)緩存和二級(jí)緩存的比較第一級(jí)緩存第二級(jí)緩存存放數(shù)據(jù)的形式相互關(guān)聯(lián)的持久化對(duì)象對(duì)象的散裝數(shù)據(jù)緩存的范圍事務(wù)范圍,每個(gè)事務(wù)都有單獨(dú)的第一級(jí)緩存進(jìn)程范圍或集群范圍,緩存被同一個(gè)進(jìn)程或集群范圍內(nèi)的所有事務(wù)共享并發(fā)訪問(wèn)策略由于每個(gè)事務(wù)都擁有單獨(dú)的第一級(jí)緩存,不會(huì)出現(xiàn)并發(fā)問(wèn)題,無(wú)需提供并發(fā)訪問(wèn)策略由于多個(gè)事務(wù)會(huì)同時(shí)訪問(wèn)第二級(jí)緩存中相同數(shù)據(jù),因此必須提供適當(dāng)?shù)牟l(fā)訪問(wèn)策略,來(lái)保證特定的事務(wù)隔離級(jí)別數(shù)據(jù)過(guò)期策略沒(méi)有提供數(shù)據(jù)過(guò)期策略。處于一級(jí)緩存中的對(duì)象永遠(yuǎn)不會(huì)過(guò)期,除非應(yīng)用程序顯式清空緩存或者清除特定的對(duì)象必須提供數(shù)據(jù)過(guò)期策略,如基于內(nèi)存的緩存中的對(duì)象的最大數(shù)目,允許對(duì)象處于緩存中的最長(zhǎng)時(shí)間,以及允許對(duì)象處于緩存中的最長(zhǎng)空閑時(shí)間物理存儲(chǔ)介質(zhì)內(nèi)存內(nèi)存和硬盤(pán)。對(duì)象的散裝數(shù)據(jù)首先存放在基于內(nèi)存的緩存中,當(dāng)內(nèi)存中對(duì)象的數(shù)目達(dá)到數(shù)據(jù)過(guò)期策略中指定上限時(shí),就會(huì)把其余的對(duì)象寫(xiě)入基于硬盤(pán)的緩存中。緩存的軟件實(shí)現(xiàn)在HIBERNATE的SESSION的實(shí)現(xiàn)中包含了緩存的實(shí)現(xiàn)由第三方提供,HIBERNATE僅提供了緩存適配器CACHEPROVIDER。用于把特定的緩存插件集成到HIBERNATE中。啟用緩存的方式只要應(yīng)用程序通過(guò)SESSION接口來(lái)執(zhí)行保存、更新、刪除、加載和查詢數(shù)據(jù)庫(kù)數(shù)據(jù)的操作,HIBERNATE就會(huì)啟用第一級(jí)緩存,把數(shù)據(jù)庫(kù)中的數(shù)據(jù)以對(duì)象的形式拷貝到緩存中,對(duì)于批量更新和批量刪除操作,如果不希望啟用第一級(jí)緩存,可以繞過(guò)HIBERNATEAPI,直接通過(guò)JDBCAPI來(lái)執(zhí)行指操作。用戶可以在單個(gè)類或類的單個(gè)集合的粒度上配置第二級(jí)緩存。如果類的實(shí)例被經(jīng)常讀但很少被修改,就可以考慮使用第二級(jí)緩存。只有為某個(gè)類或集合配置了第二級(jí)緩存,HIBERNATE在運(yùn)行時(shí)才會(huì)把它的實(shí)例加入到第二級(jí)緩存中。用戶管理緩存的方式第一級(jí)緩存的物理介質(zhì)為內(nèi)存,由于內(nèi)存容量有限,必須通過(guò)恰當(dāng)?shù)臋z索策略和檢索方式來(lái)限制加載對(duì)象的數(shù)目。SESSION的EVIT方法可以顯式清空緩存中特定對(duì)象,但這種方法不值得推薦。第二級(jí)緩存的物理介質(zhì)可以是內(nèi)存和硬盤(pán),因此第二級(jí)緩存可以存放大量的數(shù)據(jù),數(shù)據(jù)過(guò)期策略的MAXELEMENTSINMEMORY屬性值可以控制內(nèi)存中的對(duì)象數(shù)目。管理第二級(jí)緩存主要包括兩個(gè)方面選擇需要使用第二級(jí)緩存的持久類,設(shè)置合適的并發(fā)訪問(wèn)策略選擇緩存適配器,設(shè)置合適的數(shù)據(jù)過(guò)期策略。一個(gè)明顯的解決方法是使用HIBERNATE提供的延遲加載機(jī)制。這種初始化策略只在一個(gè)對(duì)象調(diào)用它的一對(duì)多或多對(duì)多關(guān)系時(shí)才將關(guān)系對(duì)象讀取出來(lái)。這個(gè)過(guò)程對(duì)開(kāi)發(fā)者來(lái)說(shuō)是透明的,而且只進(jìn)行了很少的數(shù)據(jù)庫(kù)操作請(qǐng)求,因此會(huì)得到比較明顯的性能提升。這項(xiàng)技術(shù)的一個(gè)缺陷是延遲加載技術(shù)要求一個(gè)HIBERNATE會(huì)話要在對(duì)象使用的時(shí)候一直開(kāi)著。這會(huì)成為通過(guò)使用DAO模式將持久層抽象出來(lái)時(shí)的一個(gè)主要問(wèn)題。為了將持久化機(jī)制完全地抽象出來(lái),所有的數(shù)據(jù)庫(kù)邏輯,包括打開(kāi)或關(guān)閉會(huì)話,都不能在應(yīng)用層出現(xiàn)。最常見(jiàn)的是,一些實(shí)現(xiàn)了簡(jiǎn)單接口的DAO實(shí)現(xiàn)類將數(shù)據(jù)庫(kù)邏輯完全封裝起來(lái)了。一種快速但是笨拙的解決方法是放棄DAO模式,將數(shù)據(jù)庫(kù)連接邏輯加到應(yīng)用層中來(lái)。這可能對(duì)一些小的應(yīng)用程序有效,但是在大的系統(tǒng)中,這是一個(gè)嚴(yán)重的設(shè)計(jì)缺陷,妨礙了系統(tǒng)的可擴(kuò)展性。STRUTS2STRUTS2其實(shí)并不是一個(gè)陌生的WEB框架,STRUTS2是以WEBWORK的設(shè)計(jì)思想為核心,吸收了STRUTS1的優(yōu)點(diǎn),因此,可以認(rèn)為STRUTS2是STRUTS1和WEBWORK結(jié)合的產(chǎn)物。MVC簡(jiǎn)介STRUTS2是一個(gè)兼容STRUTS1和WEBWORK的MVC框架,既然,提到了MVC框架,就不得不對(duì)MVC框架做一個(gè)簡(jiǎn)單介紹,僅限于簡(jiǎn)單介紹,如果,想了解更多的MVC的知識(shí)可以查看相關(guān)的文檔,或者找一本STRUTS1的書(shū)籍,相信上面關(guān)于MVC的篇幅不會(huì)很少。言歸正傳,其實(shí),JAVA目前出現(xiàn)的這些框架而言,其最終目的都是為了接觸耦合,不論是SPRING、HIBERNATE或MVC框架,目的都是為了接觸耦合增加復(fù)用。MVC接觸的是VIEW和MODEL間的耦合。MVC包含三個(gè)基礎(chǔ)部分MODEL、VIEW和CONTROLLER,這三個(gè)部分以最小的耦合協(xié)同工作,以增加程序的可擴(kuò)展性和可維護(hù)性。各個(gè)部分的實(shí)現(xiàn)技術(shù)可以總結(jié)如下1)MODELJAVABEAN、EJB的ENTITYBEAN2)VIEWJSP、STRUTS的TAGLIB3)CONTROLLERSTRUTS的ACTIONSERVLET、ACTION概括起來(lái)MVC的優(yōu)點(diǎn)主要有一下方面1)多個(gè)視圖可以對(duì)應(yīng)一個(gè)模型。按MVC設(shè)計(jì)模式,一個(gè)模型對(duì)應(yīng)多個(gè)視圖,可以減少代碼的復(fù)制及代碼的維護(hù)量,一旦模型發(fā)生改變,也易于維護(hù)2)模型返回的數(shù)據(jù)與顯示邏輯分離。模型數(shù)據(jù)可以應(yīng)用任何的顯示技術(shù),例如,使用JSP頁(yè)面、VELOCITY模板或者直接產(chǎn)生EXCEL文檔等3)應(yīng)用被分隔為三層,降低了各層之間的耦合,提供了應(yīng)用的可擴(kuò)展性4)控制層的概念也很有效,由于它把不同的模型和不同的視圖組合在一起,完成不同的請(qǐng)求。因此,控制層可以說(shuō)是包含了用戶請(qǐng)求權(quán)限的概念5)MVC更符合軟件工程化管理的精神。不同的層各司其職,每一層的組件具有相同的特征,有利于通過(guò)工程化和工具化產(chǎn)生管理程序代碼STRUTS2簡(jiǎn)介STRUTS2看似是從STRUTS1發(fā)展而來(lái),但實(shí)際上STRUTS2與STRUTS1在框架的設(shè)計(jì)思想上面還是有很大的區(qū)別,STRUTS2是以WEBWORK的設(shè)計(jì)思想為核心,為什么STRUTS2不沿用STRUTS1的設(shè)計(jì)思想,畢竟STRUTS1在目前的企業(yè)應(yīng)用中還是有非常大的市場(chǎng)在的,STRUTS1的一些缺點(diǎn)1)支持的表現(xiàn)層技術(shù)單一2)與SERVLETAPI嚴(yán)重耦合,這點(diǎn)可以從ACTION的EXECUTE的方法聲明里面就可以看的出來(lái)3)代碼依賴STRUTS1API,有侵入性,這點(diǎn)可以從寫(xiě)ACTION類和FORMBEAN的時(shí)候看的出來(lái),ACTION必須實(shí)現(xiàn)STRUTS的ACTION類而STRUTS2之所以以WEBWORK的設(shè)計(jì)思想為其核心,一點(diǎn)就是最近WEBWORK的上升勢(shì)頭,再就是WEBWORK沒(méi)有STRUTS1上面的那些缺點(diǎn),更符合MVC的設(shè)計(jì)思想,也更利于代碼的復(fù)用?;谝陨辖榻B可以看的出,STRUTS2體系結(jié)構(gòu)與STRUTS1的體系結(jié)構(gòu)有很大的差別,STRUTS1是使用ACTIONSERVLET做為其中心處理器,STRUTS2則使用一個(gè)攔截器(FILTERDISPATCHER)做為其中心處理器,這樣做的一個(gè)好處就是將ACTION類和SERVLETAPI進(jìn)行了分離。STRUTS2的簡(jiǎn)單處理流程如下1)瀏覽器發(fā)送請(qǐng)求2)中心處理器根據(jù)STRUTSXML文件查找對(duì)應(yīng)的處理請(qǐng)求的ACTION類3)WEBWORK的攔截器鏈自動(dòng)對(duì)請(qǐng)求應(yīng)用通用功能,例如WORKFLOW、VALIDATION等功能4)如果STRUTSXML文件中配置METHOD參數(shù),則調(diào)用METHOD參數(shù)對(duì)應(yīng)的ACTION類中的METHOD方法,否則調(diào)用通用的EXECUTE方法來(lái)處理用戶請(qǐng)求5)將ACTION類中的對(duì)應(yīng)方法返回的結(jié)果響應(yīng)給瀏覽器STRUTS2與STRUTS1對(duì)比1)ACTION類的實(shí)現(xiàn)方式STRUTS1的ACTION在實(shí)現(xiàn)的時(shí)候必須擴(kuò)展ACTION類或者ACTION的子類,STRUTS2的ACTION類實(shí)現(xiàn)的時(shí)候可以不用實(shí)現(xiàn)任何類和接口,雖然STRUTS2中提供一個(gè)ACTIONSUPPORT類,但是,不是必須的。2)STRUTS1的ACTION類是單例模式,必須設(shè)計(jì)成線程安全的,STRUTS2則為每一個(gè)請(qǐng)求產(chǎn)生一個(gè)實(shí)例3)STRUTS1的ACTION類依賴與SERVLETAPI,從其EXECUTE的方法簽名可看出,EXECUTE方法有兩個(gè)SERVLET的參數(shù)HTTPSERVLETREQUEST和HTTPSERVLETRESPONSE,STRUTS2則不依賴于SERVLETAPI4)STRUTS1依賴于SERVLETAPI這些WEB元素,因此對(duì)STRUTS1的ACTION進(jìn)行測(cè)試的時(shí)候是很困難的,需要借助與其他的測(cè)試工具,STRUTS2的ACTION可以象測(cè)試其他的一些MODEL層的SERVICE類一樣進(jìn)行測(cè)試5)STRUTS1的ACTION與VIEW通過(guò)ACTIONFORM或者其子類進(jìn)行數(shù)據(jù)傳遞,雖然也有LAZYVALIDATIONFORM這樣的ACTIONFORM的出現(xiàn),但是,還是不能象其他層面那樣通過(guò)一個(gè)簡(jiǎn)單的POJO進(jìn)行數(shù)據(jù)傳遞,而STRUTS2將這樣的奢望變成了現(xiàn)實(shí)6)STRUTS1綁定了JSTL,為頁(yè)面的編寫(xiě)帶來(lái)方便,STRUTS2整合了ONGL,也可以使用JSTL,因此,STRUTS2下的表達(dá)式語(yǔ)言更加強(qiáng)大STRUTS2與WEBWORK對(duì)比STRUTS2實(shí)際上就是WEBWORK23,不過(guò),STRUTS2還是與WEBWORK有少許的差別1)STRUTS2不再支持內(nèi)置IOC容器,改用SPRING的IOC容器2)STRUTS2對(duì)于WEBWORK的一些AJAX的特性的標(biāo)簽改用DOJO進(jìn)行替換SERVLETSERVLET是一種服務(wù)器端的JAVA應(yīng)用程序,具有獨(dú)立于平臺(tái)和協(xié)議的特性,可以生成動(dòng)態(tài)的WEB頁(yè)面。它擔(dān)當(dāng)客戶請(qǐng)求(WEB瀏覽器或其他HTTP客戶程序)與服務(wù)器響應(yīng)(HTTP服務(wù)器上的數(shù)據(jù)庫(kù)或應(yīng)用程序)的中間層。SERVLET是位于WEB服務(wù)器內(nèi)部的服務(wù)器端的JAVA應(yīng)用程序,與傳統(tǒng)的從命令行啟動(dòng)的JAVA應(yīng)用程序不同,SERVLET由WEB服務(wù)器進(jìn)行加載,該WEB服務(wù)器必須包含支持SERVLET的JAVA虛擬機(jī)。HTTPSERVLET使用一個(gè)HTML表格來(lái)發(fā)送和接收數(shù)據(jù)。要?jiǎng)?chuàng)建一個(gè)HTTPSERVLET,需要擴(kuò)展HTTPSERVLET類,該類是用專門(mén)的方法來(lái)處理HTML表格的GENERICSERVLET的一個(gè)子類。HTML表單是由和標(biāo)記定義的。表單中典型地包含輸入字段如文本輸入字段、復(fù)選框、單選按鈕和選擇列表和用于提交數(shù)據(jù)的按鈕。當(dāng)提交信息時(shí),它們還指定服務(wù)器應(yīng)執(zhí)行哪一個(gè)SERVLET或其它的程序。HTTPSERVLET類包含INIT、DESTROY、SERVICE等方法。其中INIT和DESTROY方法是繼承的。INIT方法在SERVLET的生命期中,僅執(zhí)行一次INIT方法。它是在服務(wù)器裝入SERVLET時(shí)執(zhí)行的??梢耘渲梅?wù)器,以在啟動(dòng)服務(wù)器或客戶機(jī)首次訪問(wèn)SERVLET時(shí)裝入SERVLET。無(wú)論有多少客戶機(jī)訪問(wèn)SERVLET,都不會(huì)重復(fù)執(zhí)行INIT。缺省的INIT方法通常是符合要求的,但也可以用定制INIT方法來(lái)覆蓋它,典型的是管理服務(wù)器端資源。例如,可能編寫(xiě)一個(gè)定制INIT來(lái)只用于一次裝入GIF圖像,改進(jìn)SERVLET返回GIF圖像和含有多個(gè)客戶機(jī)請(qǐng)求的性能。另一個(gè)示例是初始化數(shù)據(jù)庫(kù)連接。缺省的INIT方法設(shè)置了SERVLET的初始化參數(shù),并用它的SERVLETCONFIG對(duì)象參數(shù)來(lái)啟動(dòng)配置,因此所有覆蓋INIT方法的SERVLET應(yīng)調(diào)用SUPERINIT以確保仍然執(zhí)行這些任務(wù)。在調(diào)用SERVICE方法之前,應(yīng)確保已完成了INIT方法。SERVICE方法SERVICE方法是SERVLET的核心。每當(dāng)一個(gè)客戶請(qǐng)求一個(gè)HTTPSERVLET對(duì)象,該對(duì)象的SERVICE方法就要被調(diào)用,而且傳遞給這個(gè)方法一個(gè)“請(qǐng)求“SERVLETREQUEST對(duì)象和一個(gè)“響應(yīng)“SERVLETRESPONSE對(duì)象作為參數(shù)。在HTTPSERVLET中已存在SERVICE方法。缺省的服務(wù)功能是調(diào)用與HTTP請(qǐng)求的方法相應(yīng)的DO功能。例如,如果HTTP請(qǐng)求方法為GET,則缺省情況下就調(diào)用DOGET。SERVLET應(yīng)該為SERVLET支持的HTTP方法覆蓋DO功能。因?yàn)镠TTPSERVLETSERVICE方法會(huì)檢查請(qǐng)求方法是否調(diào)用了適當(dāng)?shù)奶幚矸椒?,不必要覆蓋SERVICE方法。只需覆蓋相應(yīng)的DO方法就可以了。SERVLET的響應(yīng)可以是下列幾種類型一個(gè)輸出流,瀏覽器根據(jù)它的內(nèi)容類型如TEXT/HTML進(jìn)行解釋;一個(gè)HTTP錯(cuò)誤響應(yīng),重定向到另一個(gè)URL、SERVLET、JSP。DOGET方法當(dāng)一個(gè)客戶通過(guò)HTML表單發(fā)出一個(gè)HTTPGET請(qǐng)求或直接請(qǐng)求一個(gè)URL時(shí),DOGET方法被調(diào)用。與GET請(qǐng)求相關(guān)的參數(shù)添加到URL的后面,并與這個(gè)請(qǐng)求一起發(fā)送。當(dāng)不會(huì)修改服務(wù)器端的數(shù)據(jù)時(shí),應(yīng)該使用DOGET方法。DOPOST方法當(dāng)一個(gè)客戶通過(guò)HTML表單發(fā)出一個(gè)HTTPPOST請(qǐng)求時(shí),DOPOST方法被調(diào)用。與POST請(qǐng)求相關(guān)的參數(shù)作為一個(gè)單獨(dú)的HTTP請(qǐng)求從瀏覽器發(fā)送到服務(wù)器。當(dāng)需要修改服務(wù)器端的數(shù)據(jù)時(shí),應(yīng)該使用DOPOST方法。DESTROY方法DESTROY方法僅執(zhí)行一次,即在服務(wù)器停止且卸裝SERVLET時(shí)執(zhí)行該方法。典型的,將SERVLET作為服務(wù)器進(jìn)程的一部分來(lái)關(guān)閉。缺省的DESTROY方法通常是符合要求的,但也可以覆蓋它,典型的是管理服務(wù)器端資源。例如,如果SERVLET在運(yùn)行時(shí)會(huì)累計(jì)統(tǒng)計(jì)數(shù)據(jù),則可以編寫(xiě)一個(gè)DESTROY方法,該方法用于在未裝入SERVLET時(shí)將統(tǒng)計(jì)數(shù)字保存在文件中。另一個(gè)示例是關(guān)閉數(shù)據(jù)庫(kù)連接。當(dāng)服務(wù)器卸裝SERVLET時(shí),將在所有SERVICE方法調(diào)用完成后,或在指定的時(shí)間間隔過(guò)后調(diào)用DESTROY方法。一個(gè)SERVLET在運(yùn)行SERVICE方法時(shí)可能會(huì)產(chǎn)生其它的線程,因此請(qǐng)確認(rèn)在調(diào)用DESTROY方法時(shí),這些線程已終止或完成。GETSERVLETCONFIG方法GETSERVLETCONFIG方法返回一個(gè)SERVLETCONFIG對(duì)象,該對(duì)象用來(lái)返回初始化參數(shù)和SERVLETCONTEXT。SERVLETCONTEXT接口提供有關(guān)SERVLET的環(huán)境信息。GETSERVLETINFO方法GETSERVLETINFO方法是一個(gè)可選的方法,它提供有關(guān)SERVLET的信息,如作者、版本、版權(quán)。當(dāng)服務(wù)器調(diào)用SEVLET的SERVICE、DOGET和DOPOST這三個(gè)方法時(shí),均需要“請(qǐng)求“和“響應(yīng)“對(duì)象作為參數(shù)。“請(qǐng)求“對(duì)象提供有關(guān)請(qǐng)求的信息,而“響應(yīng)“對(duì)象提供了一個(gè)將響應(yīng)信息返回給瀏覽器的一個(gè)通信途徑。JAVAXSERVLET軟件包中的相關(guān)類為SERVLETRESPONSE和SERVLETREQUEST,而JAVAXSERVLETHTTP軟件包中的相關(guān)類為HTTPSERVLETREQUEST和HTTPSERVLETRESPONSE。SERVLET通過(guò)這些對(duì)象與服務(wù)器通信并最終與客戶機(jī)通信。SERVLET能通過(guò)調(diào)用“請(qǐng)求“對(duì)象的方法獲知客戶機(jī)環(huán)境,服務(wù)器環(huán)境的信息和所有由客戶機(jī)提供的信息。SERVLET可以調(diào)用“響應(yīng)“對(duì)象的方法發(fā)送響應(yīng),該響應(yīng)是準(zhǔn)備發(fā)回客戶機(jī)的JSPJAVASERVERPAGESJSP技術(shù)提供了一種簡(jiǎn)單快速的方法來(lái)創(chuàng)建顯示動(dòng)態(tài)生成內(nèi)容的WEB頁(yè)面。由業(yè)界處于領(lǐng)先地位的SUN公司制定了相關(guān)的JSP技術(shù)規(guī)范,該規(guī)范定義了如何在服務(wù)器和JSP頁(yè)面間進(jìn)行交互,還描述了頁(yè)面的格式和語(yǔ)法。JSP頁(yè)面使用XML標(biāo)簽和SCRIPTLETS(一種使用JAVA語(yǔ)言編寫(xiě)的腳本代碼),封裝了生成頁(yè)面內(nèi)容的邏輯。它將各種格式的標(biāo)簽(HTML或者XML)直接傳遞回響應(yīng)頁(yè)面。通過(guò)這種方式,JSP頁(yè)面實(shí)現(xiàn)了頁(yè)面邏輯與其設(shè)計(jì)和顯示的分離。JSP技術(shù)是JAVA系列技術(shù)的一部分。JSP頁(yè)面被編譯成SERVLET,并可能調(diào)用JAVABEANS組件BEANS或ENTERPRISEJAVABEANS組件(企業(yè)BEANS),以便在服務(wù)器端處理。因此,JSP技術(shù)在構(gòu)建可升級(jí)的基于WEB的應(yīng)用程序時(shí)扮演了重要角色。JSP頁(yè)面并不局限于任何特定的平臺(tái)或WEB服務(wù)器上。JSP規(guī)范在業(yè)界有著廣泛的適應(yīng)性。JSP技術(shù)是行業(yè)協(xié)作的結(jié)果,它的設(shè)計(jì)是開(kāi)放的,符合行業(yè)標(biāo)準(zhǔn)的,并支持絕大多數(shù)的服務(wù)器、瀏覽器和相關(guān)工具。由于使用可重用的組件和標(biāo)簽取代了對(duì)頁(yè)面本身腳本語(yǔ)言的嚴(yán)重依賴,JSP技術(shù)大大加快了開(kāi)發(fā)的速度。所有JSP的實(shí)現(xiàn)均支持以JAVA編程語(yǔ)言為基礎(chǔ)的腳本語(yǔ)言,它有與生俱來(lái)的可適應(yīng)性,支持復(fù)雜的操作。JQUERYJQUERY是繼PROTOTYPE之后又一個(gè)優(yōu)秀的JAVASCRPT框架。其宗旨是寫(xiě)更少的代碼,做更多的事情。它是輕量級(jí)的JS庫(kù)壓縮后只有21K,這是其它的JS庫(kù)所不及的,它兼容CSS3,還兼容各種瀏覽器(IE60,FF15,SAFARI20,OPERA90)。JQUERY是一個(gè)快速的,簡(jiǎn)潔的JAVASCRIPT庫(kù),使用戶能更方便地處理HTMLDOCUMENTS、EVENTS、實(shí)現(xiàn)動(dòng)畫(huà)效果,并且方便地為網(wǎng)站提供AJAX交互。JQUERY還有一個(gè)比較大的優(yōu)勢(shì)是,它的文檔說(shuō)明很全,而且各種應(yīng)用也說(shuō)得很詳細(xì),同時(shí)還有許多成熟的插件可供選擇。JQUERY能夠使用戶的HTML頁(yè)保持代碼和HTML內(nèi)容分離,也就是說(shuō),不用再在HTML里面插入一堆JS來(lái)調(diào)用命令了,只需定義ID即可。JQUERY是繼PROTOTYPE之后又一個(gè)優(yōu)秀的JAVASCRPT框架。對(duì)PROTOTYPE我使用不多,簡(jiǎn)單了解過(guò)。但使用上JQUERY之后,馬上被她的優(yōu)雅吸引住了。有人使用這樣的一比喻來(lái)比較PROTOTYPE和JQUERYPROTOTYPE就像JAVA,而JQUERY就像RUBY實(shí)際上我比較喜歡JAVA(少接觸RUBY罷了)但是JQUERY的簡(jiǎn)單的實(shí)用的確有相當(dāng)大的吸引力啊在項(xiàng)目里我把JQUERY作為自己唯一的框架類包。使用其間也有一點(diǎn)點(diǎn)心得,其實(shí)這些心得,在JQUERY的文檔上面也可能有講,不過(guò)還是記下來(lái),以備忘罷。JAVAJAVAISASIMPLE,OBJECTORIENTED,DISTRIBUTED,INTERPRETED,ROBUSTSECURITY,STRUCTURENEUTRAL,PORTABLE,HIGHPERFORMANCE,MULTITHREADEDDYNAMICLANGUAGETHEMAINADVANTAGEOFJAVALANGUAGE,JAVAAPPLICATIONSACROSSHARDWAREPLATFORMSANDOPERATINGSYSTEMSFORTRANSPLANTTHISISBECAUSETHEJVMISINSTALLEDONEACHPLATFORMCANUNDERSTANDTHESAMEBYTECODEJAVALANGUAGEANDPLATFORMSCALABILITYISVERYSTRONGATTHELOWEND,JAVALANGUAGEISTHEFIRSTOPENSTANDARDSTECHNOLOGYSUPPORTENTERPRISEONE,SUPPORTTHEUSEOFXMLANDWEBSERVICECANNOTSTRIDEBUSINESSLINESTOSHAREINFORMATIONANDAPPLICATIONSCHENGXUTHEREARETHREEVERSIONSOFJAVAPLATFORM,WHICHMAKESSOFTWAREDEVELOPERS,SERVICEPROVIDERSANDEQUIPMENTMANUFACTURERSCANTARGETSPECIFICMARKETDEVELOPMENT1JAVASEFORMERLYKNOWNASJ2SEITALLOWSDEVELOPMENTANDDEPLOYMENTOFTHEDESKTOP,SERVER,EMBEDDEDANDREALTIMEENVIRONMENTUSINGTHEJAVAENVIRONMENTAPPLICATIONSJAVASEINCLUDESSUPPORTFORJAVAWEBSERVICESDEVELOPMENTCLASSES,ANDFORTHEJAVAPLATFORM,ENTERPRISEEDITIONJAVAEETOPROVIDEABASISMOSTJAVADEVELOPERSUSEJAVASE5,ALSOKNOWNASJAVA50OR“TIGER“2JAVAEEFORMERLYKNOWNASJ2EEENTERPRISEEDITIONTOHELPDEVELOPANDDEPLOYPORTABLE,ROBUST,SCALABLEANDSECURESERVERSIDEJAVAAPPLICATIONSJAVASEJAVAEEISBUILTONTHEFOUNDATION,WHICHPROVIDESWEBSERVICES,COMPONENTMODEL,MANAGEMENTANDCOMMUNICATIONAPI,CANBEUSEDTOACHIEVEENTERPRISECLASSSERVICEORIENTEDARCHITECTUREANDWEB20APPLICATIONS3JAVAMEFORMERLYKNOWNASJ2MEJAVAMEDEVICESINMOBILEANDEMBEDDEDAPPLICATIONSRUNNINGONAROBUSTANDFLEXIBLEENVIRONMENTJAVAMEINCLUDESFLEXIBLEUSERINTERFACES,ROBUSTSECURITYMODEL,ANDMANYBUILTINNETWORKPROTOCOLSANDNETWORKINGTHATCANBEDYNAMICALLYDOWNLOADEDANDEXTENSIVESUPPORTFOROFFLINEAPPLICATIONSJAVAMEBASEDAPPLICATIONSPECIFICATIONONLYWRITEONCEANDCANBEUSEDINMANYDEVICESANDCANUSETHENATIVEFEATURESOFEACHDEVICEJAVALANGUAGEISSIMPLEJAVALANGUAGESYNTAXANDTHECLANGUAGEANDCLANGUAGEISVERYCLOSE,JAVADISCARDEDTHEC,RARELYUSED,HARDTOUNDERSTANDTHECHARACTERISTICS,SUCHASOPERATOROVERLOADING,MULTIPLEINHERITANCE,THEMANDATORYAUTOMATICTYPECONVERSIONJAVALANGUAGEDOESNOTUSEPOINTERS,ANDPROVIDESAUTOMATEDWASTECOLLECTIONJAVAISANOBJECTORIENTEDLANGUAGEJAVALANGUAGEPROVIDESCLASSES,INTERFACESANDINHERITANCEOFTHEORIGINALLANGUAGE,FORSIMPLICITY,ONLYSUPPORTSSINGLEINHERITANCEBETWEENCLASSES,BUTSUPPORTMULTIPLEINHERITANCEBETWEENINTERFACESANDSUPPORTCLASSESANDINTERFACESTOACHIEVEBETWEENTHEMECHANISMKEYWORDIMPLEMENTSJAVALANGUAGEFULLYSUPPORTSDYNAMICBINDING,ANDCLANGUAGEUSEDONLYFORDYNAMICBINDINGOFVIRTUALFUNCTIONSINSHORT,JAVALANGUAGEISAPUREOBJECTORIENTEDPROGRAMMINGLANGUAGEJAVALANGUAGEISDISTRIBUTEDJAVALANGUAGESUPPORTFORINTERNETAPPLICATIONDEVELOPMENT,JAVASRMIREMOTEMETHODACTIVATIONMECHANISMISALSOANIMPORTANTMEANSOFDEVELOPINGDISTRIBUTEDAPPLICATIONSJAVALANGUAGEISROBUSTJAVASSTRONGTYPESYSTEM,EXCEPTIONHANDLING,AUTOMATEDWASTECOLLECTIONISANIMPORTANTGUARANTEEROBUSTJAVAPROGRAMSJAVALANGUAGEISSAFEJAVAISOFTENUSEDINNETWORKENVIRONMENT,THIS,JAVAPROVIDESASECURITYMECHANISMTOPREVENTMALICIOUSCODEATTACKSJAVALANGUAGEISPORTABLETHISPORTABILITYCOMESFROMTHEARCHITECTURENEUTRALITYJAVASYSTEMITSELFISHIGHLYPORTABLEJAVALANGUAGEISMULTITHREADEDINTHEJAVALANGUAGE,THETHREADISASPECIALOBJECT,ITMUSTTHREADCLASSORTHESONSUNCLASSTOCREATEJAVALANGUAGESUPPORTSIMULTANEOUSEXECUTIONOFMULTIPLETHREADS,ANDPROVIDESYNCHRONIZATIONMECHANISMSBETWEENTHREADSKEYWORDSYNCHRONIZEDJAVALANGUAGEFEATURESMAKEJAVAANEXCELLENTAPPLICATIONOFUNPARALLELEDROBUSTNESSANDRELIABILITY,WHICHALSOREDUCEDAPPLICATIONMAINTENANCECOSTSJAVAONTHEFULLSUPPORTOFOBJECTTECHNOLOGYANDJAVAPLATFORMAPIEMBEDDEDAPPLICATIONSTOREDUCEDEVELOPMENTTIMEANDREDUCECOSTSJAVASCOMPILEONCE,RUNEVERYWHEREFEATURECANMAKEITANYWHEREAVAILABLETOPROVIDEANOPENARCHITECTUREANDMULTIPLATFORM,LOWCOSTWAYOFTRANSMITTINGINFORMATIONBETWEENHIBERNATEHIBERNATEISALIGHTWEIGHTJDBCOBJECTPACKAGEITISANINDEPENDENTOBJECTPERSISTENCEFRAMEWORK,ANDTHEAPPSERVER,ANDEJBISNONECESSARYLINKHIBERNATECANUSEJDBCCANBEUSEDINANYOCCASION,SUCHASJAVAAPPLICATION,DATABASEACCESSCODE,DAOINTERFACEIMPLEMENTATIONCLASS,OREVENACCESSTHEDATABASEINSIDEABMPCODEINTHISSENSE,HIBERNATE,ANDEBISNOTACATEGORYOFTHINGSTHATDIDNOTEXISTEITHERORRELATIONSHIPHIBERNATEANDJDBCISACLOSELYRELATEDFRAMEWORK,THEHIBERNATEANDJDBCDRIVERCOMPATIBILITY,ANDDATABASESHAVESOMERELATIONSHIP,BUTTHEJAVAPROGRAMANDUSEIT,ANDTHEAPPSERVERDOESNOTHAVEANYRELATIONSHIP,THEREWASNOCOMPATIBILITYISSUESHIBERNATEPROVIDESTWOCACHE,FIRSTLEVELCACHEISASESSIONLEVELCACHE,WHICHCACHEBELONGSTOTHESCOPEOFSERVICESTHISLEVELOFCACHEBYTHEHIBERNATEMANAGEDWITHOUTTHENEEDFORINTERVENTIONUNDERNORMALCIRCUMSTANCESSECONDLEVELCACHEISSESSIONFACTORYLEVELCACHE,ITBELONGSTOTHEPROCESSOFRANGEORSCOPEOFTHECACHECLUSTERTHISLEVELOFCACHECANBECONFIGUREDANDCHANGED,ANDCANBEDYNAMICALLYLOADEDANDUNLOADEDHIBERNATEQUERYRESULTSALSOPROVIDEAQUERYCACHE,ITDEPENDSONTHESECONDLEVELCACHEWHENANAPPLICATIONCALLEDSESSIONSSAVE,UPDATE,SAVEORUPDATE,GETORLOAD,ANDTHEQUERYINTERFACECALLLIST,ITERATEORFILTERMETHOD,IFTHESESSIONCACHEDOESNOTEXISTACORRESPONDINGOBJECT,HIBERNATEWILLPUTTHEOBJECTTOTHEFIRSTLEVELCACHEWHENCLEANINGTHECACHE,HIBERNATEOBJECTSACCORDINGTOTHESTATEOFTHECACHECHANGESTOSYNCHRONIZEUPDATETHEDATABASESESSIONFORTHEAPPLICATIONPROVIDESTWOMETHODSOFMANAGINGTHECACHEEVICTOBJECTOBJREMOVEDFROMTHECACHEPARAMETERSOFTHESPECIFIEDPERSISTENTOBJECTCLEAREMPTYTHECACHEOFALLPERSISTENTOBJECTSHIBERNATESECONDLEVELCACHESTRATEGYGENERALPROCESSISASFOLLOWS1THECONDITIONWHENAQUERYISALWAYSISSUEDASELECTFROMTABLE_NAMEWHERESELECTALLFIELDSSUCHASSQLSTATEMENTTOQUERYTHEDATABASE,ANACCESSTOALLOFTHEDATAOBJECT2ALLTHEDATAOBJECTSTOBEPLACEDUNDERTHEIDTOTHESECONDLEVELCACHE3WHENTHEHIBERNATEOBJECTBASEDIDTOACCESSTHEDATA,THEFIRSTCHECKFROMTHESESSIONACACHEFINDINGOUT,IFTHECONFIGURATIONOFTHESECONDARYCACHE,THENTHESECONDARYCACHEFROMTHEINVESTIGATIONFINDINGOUT,ANDTHENQUERYTHEDATABASE,THERESULTSINACCORDANCEWITHTHEIDINTOTHECACHE4REMOVE,UPDATEANDINCREASETHETIMEDATA,WHILEUPDATINGTHECACHEHIBERNATESECONDLEVELCACHESTRATEGYISFORTHEIDQUERYCACHEPOLICY,THEREISNOROLEFORTHECONDITIONSOFINQUIRYTOTHISEND,HIBERNATEPROVIDESACHECKAGAINSTTHECONDITIONSOFTHEQUERYCACHEHIBERNATEOBJECTRELATIONALMAPPINGFORTHEDELAYANDNONDELAYOBJECTINITIALIZATIONNONLAZYWHENREADINGANOBJECTANDTHEOBJECTWILLBEALLREADOUTTOGETHERWITHOTHEROBJECTSTHISSOMETIMESRESULTSINHUNDREDSIFNOTTHOUSANDSOFWORDSSELECTSTATEMENTWHENREADINGTHEOBJECTIMPLEMENTATIONTHISPROBLEMSOMETIMESOCCURSWHENUSINGTHETWOWAYRELATIONSHIP,OFTENLEADINGTOTHEDATABASESTOBEREADDURINGTHEINITIALIZATIONPHASEOUTOFCOURSE,YOUCANTAKETHETROUBLETOEXAMINEEACHOBJECTANDOTHEROBJECTSOFGUANXI,ANDTOTHEMOSTEXPENSIVEOFTHESHANCHU,BUTINTHELAST,WEMAYTHEREFORELOSELEORMTOOLTHISXIANGZAIOBTAINEDBIANLIACACHEANDSECONDARYCACHEOFCOMPARISONTHEFIRSTLEVELCACHESECONDLEVELCACHEDATASTOREDINTHEFORMOFINTERRELATEDPERSISTENTOBJECTSTHEOBJECTOFBULKDATACACHERANGEOFTHESCOPEOFSERVICES,EACHTRANSACTIONHASASEPARATEFIRSTLEVELCACHEPROCESSRANGEORSCOPEOFTHECLUSTER,THECACHEISTHESAMEPROCESSORCLUSTERTOSHAREONALLMATTERSWITHINTHECONCURRENTACCESSPOLICIESBECAUSEEACHTRANSACTIONHASASEPARATEFIRSTLEVELCACHE,CONCURRENCYPROBLEMDOESNOTOCCURWITHOUTTHENEEDTOPROVIDECONCURRENTACCESSPOLICYWILLBEANUMBEROFMATTERSSIMULTANEOUSACCESSTOTHESAMESECONDLEVELCACHEDATA,ITISNECESSARYTOPROVIDEAPPROPRIATECONCURRENTACCESSPOLICIES,TOENSURETHATAPARTICULARTRANSACTIONISOLATIONLEVELDATAEXPIRATIONPOLICIESDIDNOTPROVIDEDATAEXPIRATIONPOLICIESOBJECTINACACHEWILLNEVEREXPIRE,UNLESSTHEAPPLICATIONEXPLICITLYCLEARTHECACHEORCLEARASPECIFICOBJECTMUSTPROVIDEDATAEXPIRATIONPOLICIES,SUCHASMEMORYCACHEBASEDONTHEMAXIMUMNUMBEROFOBJECTS,ALLOWINGOBJECTSINTHECACHEOFTHEMOSTALONGTIME,ANDALLOWINGTHEOBJECTINTHECACHETHELONGESTIDLETIMEOFPHYSICALMEMORYANDHARDDISKMEMORYSTORAGEMEDIUMFIRSTOFALLBULKDATAOBJECTSSTOREDINTHEMEMORYBASEDCACHE,WHENTHENUMBEROFOBJECTSINMEMORYTODATAEXPIRATIONPOLICYSPECIFIEDLIMIT,THEREMAININGOBJECTSWILLBEWRITTENONTHEHARDDISKCACHECACHINGSOFTWAREIMPLEMENTATIONOFTHEHIBERNATESESSIONISINCLUDEDINTHEREALIZATIONOFTHECACHEPROVIDEDBYTHIRDPARTIES,HIBERNATEPROVIDESONLYACACHEADAPTERCACHEPROVIDERUSEDTOPLUGINTOAPARTICULARCACHEINHIBERNATEWAYCACHEENABLEDAPPLICATIONSBYASLONGASTHESESSIONINTERFACEIMPLEMENTATIONSAVE,UPDATE,DELETE,DATALOADINGANDQUERYTHEDATABASEOPERATIONS,HIBERNATEWILLENABLEFIRSTLEVELCACHE,THEDATAINTHEDATABASEINTHEFORMOFANOBJECTCOPIEDTOTHECACHEFORBATCHUPDATESANDBU
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程采購(gòu)服務(wù)合同范本
- 賓館監(jiān)控安裝合同范本
- 托管與家長(zhǎng)免責(zé)協(xié)議書(shū)
- 工程人員勞務(wù)合同范本
- 學(xué)校與武館合同協(xié)議書(shū)
- 建筑工程用工合同范本
- 技術(shù)居間協(xié)議合同范本
- 大班社會(huì)我的祖國(guó)教案
- 中班上學(xué)期數(shù)學(xué)教案走迷宮(2025-2026學(xué)年)
- 二年級(jí)上冊(cè)語(yǔ)文一分鐘∣人教新課標(biāo)教案(2025-2026學(xué)年)
- 管線拆除施工方案
- 杉木容器育苗技術(shù)規(guī)程
- 售后工程師述職報(bào)告
- 專題12將軍飲馬模型(原卷版+解析)
- 粉刷安全晨會(huì)(班前會(huì))
- (中職)中職生創(chuàng)新創(chuàng)業(yè)能力提升教課件完整版
- 部編版八年級(jí)語(yǔ)文上冊(cè)課外文言文閱讀訓(xùn)練5篇()【含答案及譯文】
- 高三英語(yǔ)一輪復(fù)習(xí)人教版(2019)全七冊(cè)單元寫(xiě)作主題匯 總目錄清單
- 路基工程危險(xiǎn)源辨識(shí)與風(fēng)險(xiǎn)評(píng)價(jià)清單
- NB-T+10131-2019水電工程水庫(kù)區(qū)工程地質(zhì)勘察規(guī)程
- 大學(xué)基礎(chǔ)課《大學(xué)物理(一)》期末考試試題-含答案
評(píng)論
0/150
提交評(píng)論