




已閱讀5頁(yè),還剩10頁(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)介
外文原文CHAPTER9WRITINGCONTAINERMANAGEDPERSISTENTENTITYBEANSINCHAPTER8,WEWROTEABEANMANAGEDPERSISTENTENTITYBEANREPRESENTINGABANKACCOUNTINTHISCHAPTER,WELLSEEHOWTHINGSCHANGEWHENWEMOVETOACONTAINERMANAGEDMODELWITHCONTAINERMANAGEDPERSISTENCE,YOUDONTIMPLEMENTANYPERSISTENCELOGICINTHEENTITYBEANITSELFRATHER,THEEJBCONTAINERPERFORMSSTORAGEOPERATIONSFORYOUASYOUWILLSEE,THISGREATLYSIMPLIFIESBEANDEVELOPMENTBEFOREREADINGTHISCHAPTER,YOUSHOULDBEFAMILIARWITHTHEENTITYBEANCONCEPTSWECOVEREDINCHAPTER7CONTAINERMANAGEDFIELDSACONTAINERMANAGEDPERSISTENTENTITYBEANALLOWSTHECONTAINERTOHANDLESOMEORALLOFITSDATAACCESSLOGICRATHERTHANCODINGJDBCORSQL/JOPERATIONSINYOURBEANCLASS,YOURCONTAINERIMPLICITLYPERFORMSALLDATABASEOPERATIONSBEHINDTHESCENESWITHCONTAINERMANAGEDPERSISTENCE,YOUMUSTMAKESOMEOFYOURENTITYBEANCLASSSFIELDSPUBLICSOTHATTHECONTAINERCANSETTHEFIELDSWHENITPERFORMSDATABASEOPERATIONSONBEHALFOFYOURBEANTHEFIELDSTHATYOUWANTTOBEPERSISTENTARECALLEDCONTAINERMANAGEDFIELDSYOUDONTHAVETOWORRYABOUTSETTINGTHESEFIELDSTHEEJBCONTAINERWILLAUTOMATICALLYMANIPULATETHEMFORYOUBEHINDTHESCENESWHENITPERFORMSSTORAGEOPERATIONSONERESTRICTIONOFCONTAINERMANAGEDFIELDSISTHATEVERYFIELDYOUWANTTOBEMANAGEDBYTHECONTAINERMUSTFOLLOWTHERULESFORJAVAOBJECTSERIALIZATIONWEDESCRIBETHESERULESINFULLINAPPENDIXATHISMEANSTHATPRIMITIVETYPESSUCHASDOUBLESANDBOOLEANS,ASWELLASSERIALIZABLECLASSESSUCHASPRIMARYKEYCLASSESOREJBHANDLESTOOTHERENTITYBEANS,CANBECONTAINERMANAGEDFIELDSFOREXAMPLE,THEFOLLOWINGISASNIPPETOFCODEFROMOURBANKACCOUNTENTITYBEANCLASSTHATWEWROTEINCHAPTER8WITHCONTAINERMANAGEDPERSISTENCE,THECONTAINERCANPERSISTEACHOFTHESEFIELDSFORYOUBEHINDTHESCENESWHENSAVINGYOURBEANINSTANCESFIELDS,THECONTAINERISRESPONSIBLEFORQUERYINGYOURBEANINSTANCEFORTHESEFIELDVALUESWHENLOADINGDATAINTOYOURBEANINSTANCE,THECONTAINERSETSTHESEFIELDSTHISISPOSSIBLEBECAUSEEACHOFTHEFIELDSISDECLAREDASPUBLICOFCOURSE,YOUSTILLMUSTINFORMTHECONTAINERABOUTWHICHFIELDSITSHOULDMANIPULATEYOUSPECIFYTHISINYOURBEANSDEPLOYMENTDESCRIPTORTHEEJBCONTAINERWILLINSPECTTHEDEPLOYMENTDESCRIPTORTOFIGUREOUTWHICHOFYOURENTITYBEANSFIELDSTOMANIPULATENOTETHATNOTALLFIELDSWITHINTHEBEANHAVETOBEMANAGEDBYTHECONTAINERYOUMIGHTBEPULLINGDATAMANUALLYFROMASECONDARYSOURCE,ORYOUMIGHTHAVECALCULATEDFIELDSTHEEJBCONTAINERWILLAUTOMATICALLYNOTIFYYOURBEANCLASSDURINGPERSISTENTOPERATIONS,ALLOWINGYOUTOMANAGETHESEFIELDSPRIMARYKEYCLASSASWITHBEANMANAGEDPERSISTENCE,CONTAINERMANAGEDPERSISTENCEDICTATESTHATYOURPRIMARYKEYCLASSMUSTBESERIALIZABLEBECAUSETHEEJBCONTAINERWILLWORKWITHYOURPRIMARYKEY,THEREARENEWRESTRICTIONSFORHOWYOUWRITEYOURPRIMARYKEYCLASSTHEMOSTIMPORTANTRESTRICTIONISTHATTHEFIELDSYOUHAVEINYOURPRIMARYKEYMUSTCOMEFROMTHECONTAINERMANAGEDFIELDSOFYOURENTITYBEAN,WHICHWEDESCRIBEDPREVIOUSLYTHISRESTRICTIONALLOWSTHEEJBCONTAINERTOSET,ASWELLASEXTRACT,YOURENTITYBEANSPRIMARYKEYFIELDSFOREXAMPLE,TAKEOURPRIMARYKEYCLASSFROMOURCHAPTER8SBANKACCOUNTTHISISAVALIDPRIMARYKEYCLASSFORCONTAINERMANAGEDPERSISTENCEBECAUSEITSSERIALIZABLEANDBECAUSEITSPUBLICFIELDSCOMEFROMOURBEANCLASSSCONTAINERMANAGEDFIELDSIMPLEMENTATIONGUIDELINESFORCONTAINERMANAGEDPERSISTENCETHEMETHODIMPLEMENTATIONSOFYOURENTITYBEANSSHOULDBEDIFFERENTFORCONTAINERMANAGEDPERSISTENTENTITIESNOLONGERAREYOUCONTROLLINGTHEROUTINEPERSISTENTOPERATIONSOFYOURBEANS,ANDSOMANYOFTHEMETHODSCANBELEFTEMPTYTHECONTAINERWILLDOITFORYOUTABLE91ISASUMMARYOFWHATYOUSHOULDIMPLEMENTINEACHMETHOD,ASSUMINGYOURENTITYBEANSPERSISTENCEISCONTAINERMANAGEDTAKEAQUICKGLANCEATTHECHARTFORNOWASYOUCANSEEFROMTHETABLE,MANYOFTHEDATABASEINTENSIVEOPERATIONSHAVEBEENREDUCEDINSCOPESIGNIFICANTLYYOUSHOULDREFERBACKTOTHECHARTWHENREADINGTHROUGHTHECODEINTHISCHAPTERORWHENPROGRAMMINGYOUROWNENTITYBEANCLASSESTHEORDEROFMETHODSLISTEDVERYROUGHLYMODELSTHEFLOWOFCONTROLOFANENTITYBEANINSTANCESLIFECYCLETHATWESAWATTHEENDOFCHAPTER7CONTAINERMANAGEDPERSISTENCEEXAMPLEAPRODUCTLINELETSSEEAQUICKDEMONSTRATIONOFCONTAINERMANAGEDPERSISTENCEINACTION,APPLIEDTOTHECONCEPTOFAPRODUCTLINEIFYOUREWORKINGFORAPRODUCTBASEDCOMPANY,YOURCOMPANYSPRODUCTLINEISTHESUITEOFPRODUCTSYOURCOMPANYOFFERSFOREXAMPLE,IFYOUREANAPPLIANCECOMPANY,YOUMIGHTOFFERADISHWASHER,ASTOVE,ANDADRYERIFYOUREACOMPUTERHARDWARECOMPANY,YOUMIGHTOFFERMEMORY,HARDDISKS,ANDPROCESSORSWEREGOINGTOMODELAGENERICPRODUCTASANENTITYBEANTHATUSESCONTAINERMANAGEDPERSISTENCETHEOBJECTMODELFOROURPRODUCTLINEISDETAILEDINFIGURE91LETSTAKEALOOKATEACHOFTHEFILESTHATWEMUSTCREATEFOROURENTITYBEANCOMPONENTPRODUCTJAVAOURREMOTEINTERFACEISSPECIFIEDBYPRODUCTJAVA,SHOWNINSOURCE91OURREMOTEINTERFACEISVERYSIMILARTOCHAPTER8SBANKACCOUNTREMOTEINTERFACEITHASMETHODSTOMODIFYTHEENTITYBEANINSTANCESFIELDSANDTHROWSREMOTEEXCEPTIONSTOINDICATESYSTEMLEVELERRORSPRODUCTHOMEJAVANEXT,WEHAVETHEPRODUCTSHOMEINTERFACE,PRODUCTHOMEJAVA,PRESENTEDINSOURCE92OURHOMEINTERFACEDEFINESASINGLECREATEMETHODTOCREATEANEWPRODUCTINTHEDATABASEITRETURNSAPRODUCTEJBOBJECTSOTHECLIENTCANMANIPULATETHEENTITYBEANDATAANDTHROWSAJAVAXEJBCREATEEXCEPTIONTOINDICATEANAPPLICATIONLEVELPROBLEMWEALSOEXPOSEALLSORTSOFFINDERMETHODSTOFINDEXISTINGPRODUCTSSOMEOFTHEFINDERSRETURNASINGLEEJBOBJECT,WHILEOTHERSRETURNAJAVAUTILENUMERATIONOFMULTIPLEEJBOBJECTSTHISISNEEDEDIFTHEFINDERMETHODSFINDMORETHANONEMATCHINGOBJECTNOTETHATFINDBYPRIMARYKEYSHOULDNEVERRETURNANENUMERATIONBECAUSEPRIMARYKEYSMUSTBEUNIQUEPRODUCTPKJAVAOURPRIMARYKEYCLASSISDEFINEDBYPRODUCTPKJAVA,SHOWNINSOURCE93ASWITHOURBANKACCOUNT,OURPRIMARYKEYISASIMPLESTRINGANDASWEVEFOUNDOUT,THEREARERESTRICTIONSFORWHATOURPRIMARYKEYCANBEOURPRIMARYKEYFIELDSARECOMINGFROMTHECONTAINERMANAGEDFIELDSOFTHEENTITYBEANCLASS,ASISREQUIREDWITHCONTAINERMANAGEDPERSISTENCEINPARTICULAR,OURPRIMARYKEYREPRESENTSTHEIDSTRINGOFAPRODUCTSUCHASAPRODUCTSKUNUMBERPRODUCTBEANJAVANEXT,WEHAVEOURCONTAINERMANAGEDENTITYBEANIMPLEMENTATION,PRODUCTBEANJAVA,SHOWNINSOURCE94THISBEANISMORECOMPLEXTHANOURBANKACCOUNTEXAMPLEWEVEDEFINEDMANYFINDERMETHODS,ANDWEHAVEFOURPERSISTENTFIELDSYETEVENTHOUGHWEVEADDEDALLTHISCOMPLEXITY,OURBEANISLESSTHAN40PERCENTOFTHESIZEOFOURBANKACCOUNTBEANTHISISANAMAZINGREDUCTIONINCODECOMPLEXITYANDBECAUSEOURBEANHASNODATABASECODEINIT,WEHAVEREDUCEDTHECHANCEFORBUGSINOURBEANTHATWOULDBEDUETOUSERERRORWORKINGWITHJDBCCODETHISISAHUGESAVINGSINDEVELOPMENTANDTESTINGTIMEWEHAVEFOURCONTAINERMANAGEDFIELDS,ALLWITHPUBLICSCOPETHEYREPUBLICSOTHATTHECONTAINERCANMANIPULATETHEMOUREJBCREATEMETHODSIMPLYSETSOURCONTAINERMANAGEDFIELDSTOTHEPASSEDINCLIENTPARAMETERSTHEEJBCONTAINERWILLEXTRACTTHOSEFIELDSANDSETUPTHEDATABASEDATAFORUSNOTICETHATOUREJBCREATEMETHODDOESNOTRETURNAPRIMARYKEYBECAUSETHEEJBCONTAINERDOESTHATFORUSTHERESTOFOURBEANISJUSTEMPTYMETHODSANDCOMMENTSTHERESALMOSTNOLOGICATALLOURBEANCLASSISJUSTDATAWITHSOMEACCESSORMETHODSCLIENTJAVAOURCLIENTCODEISASIMPLESUITEOFTESTCASESTOTRYOUTOURBEAN,ASSHOWNINSOURCE95WEPERFORMAJNDILOOKUPTOACQUIRETHEHOMEOBJECTANDCREATESOMEENTITYBEANDATAWETHENTRYOUTACOUPLEOFFINDERMETHODSWECANLOOPTHROUGHTHEFINDERSRETURNEDNUMERATIONSANDCALLBUSINESSMETHODSONEACHEJBOBJECTWETHENDESTROYALLTHEEJBOBJECTSWECREATEDINAFINALLYCLAUSETHEDEPLOYMENTDESCRIPTORWENOWNEEDTOWRITEOURDEPLOYMENTDESCRIPTORINADDITIONTODEFININGTHESTANDARDENTITYBEANFIELDS,WENOWNEEDTOINFORMTHECONTAINERABOUTOURPUBLICCONTAINERMANAGEDFIELDSTHEDEPLOYMENTDESCRIPTORISSHOWNINTABLE92NOTICETHATWENOLONGERHAVEANYJDBCAPPLICATIONSPECIFICPROPERTIESBECAUSEWEVEEXTERNALIZEDALLDATABASEACTIVITYTOTHECONTAINERINADDITIONTOTHEDEPLOYMENTDESCRIPTOR,WENEEDTOTELLTHECONTAINEREXACTLYHOWTOPERFORMPERSISTENTOPERATIONSTHISISONETRADEOFFOFCONTAINERMANAGEDPERSISTENCEYOUSTILLNEEDTODECLAREPERSISTENTRULES,RATHERTHANCODETHEMINTOYOURBEANUSINGJDBCORSQL/JIFYOUREUSINGARELATIONALDATASTORE,YOULLNEEDTODEFINEEXACTLYHOWYOURENTITYBEANSPUBLICFIELDSMAPTOTHATDATABASETHUS,WEMUSTDEFINEASERIESOFOBJECTRELATIONALMAPPINGENTRIESTHESEENTRIESMAPENTITYBEANFIELDSTORELATIONALDATABASECOLUMNNAMESTHEEJBCONTAINERINTHISCASE,BEAWEBLOGICWILLUSETHISMAPPINGWHENSTORINGORRETRIEVINGOURCONTAINERMANAGEDFIELDSFROMTHEDATABASENOTETHATTHISISVERYEJBCONTAINERSPECIFICSOMEEJBCONTAINERSWILLSUPPORTOBJECTDATABASESANDTHUSWILLNOTHAVEAMAPPINGINTOATWODIMENSIONALRELATIONALDATABASECONSULTYOUREJBCONTAINERSDOCUMENTATIONFORMOREINFORMATIONOURPRODUCTLINESPERSISTENTENTRIESFORBEASWEBLOGICSERVERARESHOWNINTABLE93WEALSONEEDTOSPECIFYTHEIMPLEMENTATIONOFOURHOMEOBJECTSFINDERMETHODSTHISISALSO,UNFORTUNATELY,PROPRIETARYFOREACHEJBCONTAINERBEAWEBLOGICHASASIMPLESCRIPTINGLANGUAGEFORTHISPURPOSEFOREXAMPLETHECOMPLETESCRIPTISSHOWNINTABLE94THECONTAINERWILLIMPLEMENTTHISLOGIC,PERHAPSUSINGJDBCORSQL/JWHENEVERACLIENTWANTSTOEXECUTEAFINDERMETHODONTHEHOMEOBJECT,THECONTAINERWILLAUTOMATICALLYRUNTHEIMPLEMENTEDJDBCORSQL/JCODERUNNINGTHECLIENTPROGRAMTORUNTHECLIENTPROGRAM,TYPEACOMMANDSIMILARTOTHEFOLLOWINGDEPENDINGONWHATYOUREJBCONTAINERJAVANAMINGANDDIRECTORYINTERFACE,ORJNDI,INITIALIZATIONPARAMETERSARETHEINITIALIZATIONPARAMETERSAREREQUIREDBYJNDITOFINDTHEHOMEOBJECT,ASWELEARNEDINCHAPTER4SERVERSIDEOUTPUTWHENYOURUNTHECLIENT,YOUSHOULDSEESOMETHINGSIMILARTOTHEFOLLOWINGONTHESERVERSIDENOTETHATYOURPARTICULAROUTPUTMAYVARY,DUETOVARIANCESINEJBCONTAINERBEHAVIORWECREATEDANUMBEROFNEWPRODUCTSINOURCLIENTCODEFOREACHNEWPRODUCT,OUREJBCONTAINERCREATEDADEDICATEDBEANINSTANCEITDIDNTHAVETODOTHISITCOULDHAVEPASSIVATED/ACTIVATEDTHESAMEBEANANDSWITCHEDCONTEXTBETWEENCLIENTSWHENCREATINGABEAN,OURCONTAINERFIRSTCALLEDNEWINSTANCE,FOLLOWEDBYSETENTITYCONTEXT,WHICHGOTTHEBEANINTOTHEPOOLITTHENCALLEDEJBCREATE,SETUPTHEDATABASEDATA,BOUNDTHEBEANTOANEJBOBJECT,ANDFINALLYCALLEDEJBPOSTCREATEALLASEXPECTEDITTHENSERVICEDAFEWBUSINESSCALLS,INSTANTIATEDAFEWNEWBEANS,ANDOCCASIONALLYSYNCHRONIZEDTHEBEANSWITHTHEUNDERLYINGDATABASECLIENTSIDEOUTPUTFORTHECLIENTSIDE,AFTERCREATINGSOMEPRODUCTS,WEPERFORMEDAFINDFORALLPRODUCTSTHATCOST200INDEED,MULTIPLEENTITYBEANSWERERETURNEDINOURENUMERATION,ASISSHOWNBELOWPROMISESANDREALITIESBEANMANAGEDPERSISTENCEVERSUSCONTAINERMANAGEDPERSISTENCENOWTHATYOUVESEENBOTHBEANMANAGEDANDCONTAINERMANAGEDPERSISTENTENTITYBEANS,YOUMUSTBECONVINCEDTHATCONTAINERMANAGEDBEANSARETHEWAYTOGOALLTHATJDBCCODEWASELIMINATEDFROMOURBEANCLASS,SAVINGUSSIGNIFICANTDEVELOPMENTTIMEHOWEVER,THECHOICEBETWEENCONTAINERANDBEANMANAGEDPERSISTENCEISNOTNECESSARILYCLEARCUTBOTHBEANMANAGEDANDCONTAINERMANAGEDBEANSHAVEVIRTUESCONTAINERMANAGEDPERSISTENCEMAYPROMISEALOT,BUTITSCURRENTMANIFESTATIONFAILSTODELIVERONNUMEROUSCOUNTS,ABOUTWHICHYOUMUSTBEINFORMEDLETUSLOOKATTHREEPROMISES,ANDTHEREALITIESOFTHOSEPROMISES,FORCONTAINERMANAGEDPERSISTENCEPROMISECONTAINERMANAGEDPERSISTENCEREDUCESCODEIFYOUTELLTHEEJBCONTAINERACOUPLEOFTHINGSABOUTYOURBEAN,CONTAINERMANAGEDPERSISTENCECANPERFORMALLDATAACCESSLOGICFORYOUTHISREDUCESTHESIZEOFYOURBEANTREMENDOUSLYNOMOREJDBCCODEINYOURBEANSWHICHREDUCESOVERALLDEVELOPMENTTIMEREALITYDEPENDINGONYOURCONTAINER,YOUSTILLMAYNEEDTOWRITEPERSISTENTCODEWITHCONTAINERMANAGEDBEANSTHISCOULDBEGOINGTHROUGHASERIESOFWIZARDSTOSPECIFYHOWYOURENTITYBEANSMAPTOANUNDERLYINGSTOREYOUALSONEEDTOSPECIFYTHELOGICBEHINDYOURFINDERMETHODSTHEDIFFERENCEISTHATYOURDATAACCESSLOGICISNOWSPECIFIEDDECLARATIVELY,RATHERTHANBEINGWRITTENINJAVATHISDOESSIGNIFICANTLYREDUCEYOURCODESIZE,HOWEVER,ANDHASTHENICEFEATURETHATYOUCANMIGRATETONEWDATABASESCHEMASVERYQUICKLYWITHOUTCHANGINGANYSOURCECODEANOTHERCODEBENEFITRARELYMENTIONEDISTHATYOURCONTAINERCANBEVERYSMARTABOUTHOWITCACHESENTITYBEANSTATEINMEMORYADVANCEDEJBCONTAINERSSHIPWITHASHAREDOBJECTCACHE,WHICHSTORESENTITYBEANDATAINMEMORYACROSSTRANSACTIONSUSINGASHAREDOBJECTCACHE,THECONTAINERCANAVOIDUNNECESSARYEJBLOAD/EJBSTORECALLS,WHICHINCREASESTRANSACTIONALTHROUGHPUTEXPONENTIALLYNOTETHATYOUCANCACHEENTITYBEANSTATEINMEMORYUSINGBEANMANAGEDPERSISTENCEASWELL,BUTTHEBURDENOFDOINGTHISFALLSONYOUPROMISECONTAINERMANAGEDPERSISTENCEREDUCESBUGSONEBENEFITOFCONTAINERMANAGEDPERSISTENCEISTHATITELIMINATESMANYOFTHEBUGSTHATOCCURINADEPLOYMENTMOSTLYDUETOBUGGYJDBCCODETHEPROBLEMWITHJDBCCODEISTHATITSNOT“TYPESAFE”YOUCANTDETECTWHETHERITWILLWORKATCOMPILETIMEYOURJDBCSTATEMENTSARESIMPLESTRINGSTHATCANBERESOLVEDONLYATRUNTIMEBYWAYOFCOMPARISON,WITHCONTAINERMANAGEDPERSISTENCETHEEJBCONTAINERHASBEENWRITTENBYADATABASEPROFESSIONALWHOSESOLEJOBISTOMAKESURETHEGENERATEDDATABASECALLSARE,INGENERAL,ACCURATEPLUS,IFYOUASAUSERHAVESPECIFIEDANERRORPERHAPSYOUMISNAMEDACONTAINERMANAGEDFIELDINTHEDEPLOYMENTDESCRIPTOR,YOUCANDETECTERRORSATCOMPILETIMETHEWAYYOUDETECTTHESEERRORSISBYRUNNINGYOUREJBCONTAINERTOOLS,WHICH,IFTHEYREANYGOOD,SHOULDUSEJAVAREFLECTIONORTHEEQUIVALENTTOFIGUREOUTWHETHERYOURDEPLOYMENTDESCRIPTORDOESINDEEDMAPTOYOURCONTAINERMANAGEDFIELDSITCANALSOCHECKTHINGSSUCHASWHETHERYOURPRIMARYKEYFIELDSAREASUBSETOFYOURCONTAINERMANAGEDFIELDS中文翻譯第9章編寫容器管理持久性實(shí)體BEAN第8章中,我們寫了一個(gè)BEAN來(lái)管理持久性實(shí)體BEAN來(lái)表示銀行戶口。在這一章中,我們將看到當(dāng)我們移動(dòng)一個(gè)容器管理模式時(shí)會(huì)有怎樣的變化。用容器管理持久化,使你不必在實(shí)體BEAN中執(zhí)行任何持久性邏輯,反之,EJB容器為你執(zhí)行存儲(chǔ)操作。你會(huì)看到,這極大地簡(jiǎn)化了BEAN的開(kāi)發(fā)。在學(xué)習(xí)本章前,你應(yīng)該熟悉我們?cè)诘?章中講述的實(shí)體BEAN概念。容器管理作用域一個(gè)容器管理的持久性實(shí)體BEAN,讓容器處理一些或所有的數(shù)據(jù)訪問(wèn)邏輯。與編碼使用JDBC或SQL/J操作你的BEAN類不同,你的容器在后臺(tái)執(zhí)行了所有的數(shù)據(jù)庫(kù)操作。使用容器管理持久化,你必須在你的實(shí)體BEAN類中做出一些的公有訪問(wèn)的作用域,使容器在它執(zhí)行數(shù)據(jù)庫(kù)操作時(shí)你的BEAN能夠設(shè)置訪問(wèn)各個(gè)作用域。你想使用持久性操作的作用域,被稱作容器管理作用域。你不必?fù)?dān)心如何設(shè)置這些作用域當(dāng)EJB容器執(zhí)行存儲(chǔ)操作時(shí),EJB容器將自動(dòng)在后臺(tái)為你操縱這些作用域。一個(gè)容器管理作用域的約束,是每個(gè)你想使用容器管理的作用域必須遵循JAVA對(duì)象序列化的規(guī)則(我們?cè)诟戒汚中完整的說(shuō)明了這些規(guī)則)。這意味著原始類型,如DOUBLE型和布爾型,以及SERIALIZABLE類中的主鍵類或EJB處理其他實(shí)體BEAN時(shí),可以使用容器管理作用域。舉例來(lái)說(shuō),以下是我們?cè)诘?章中我們的銀行帳戶實(shí)體BEAN類的部分代碼使用容器管理持久化,容器能夠?yàn)槟阍诤笈_(tái)持續(xù)上述每個(gè)作用域。當(dāng)保存你的BEAN的實(shí)例對(duì)象的作用域時(shí),容器負(fù)責(zé)為這些作用域的值來(lái)檢查你的BEAN的實(shí)例。當(dāng)向你的BEAN的實(shí)例對(duì)象中載入數(shù)據(jù)時(shí),容器設(shè)置這些作用域。這很可能是因?yàn)槊恳粋€(gè)作用域都被聲明為PUBLIC。當(dāng)然,你還必須告知容器應(yīng)該操控哪些作用域。你在你的BEAN的部署描述符中詳細(xì)說(shuō)明這一點(diǎn)。EJB容器會(huì)檢查部署描述符,斷定操控你的實(shí)體BEAN的哪個(gè)作用域。注意不是BEAN內(nèi)的所有作用域都必須由容器管理。你可以手動(dòng)的從一個(gè)次級(jí)來(lái)源中引入數(shù)據(jù),或者你有合適的作用域。EJB容器在持久化操作時(shí)會(huì)自動(dòng)通知你的BEAN類,允許你來(lái)管理這些作用域的操作。主鍵類與BEAN管理的持久化相同,容器管理持久化指令時(shí)你的主鍵類必須被SERIALIZABLE。由于EJB容器會(huì)操作你的主鍵,你如何寫自己的主鍵類也有了新的限制。最主要的限制是你主鍵中的作用域必須來(lái)自已經(jīng)聲明的由容器管理的你的實(shí)體BEAN的作用域。我們前面所述。這項(xiàng)限制允許EJB容器設(shè)置,以及提取,你的實(shí)體BEAN的主鍵作用域。舉例來(lái)說(shuō),我們第8章的銀行賬戶的主鍵類這是一個(gè)容器管理持久化的有效的主鍵類,因?yàn)樗强尚蛄谢?,并且是從我們BEAN類的容器管理作用域而來(lái)的公有的作用域。為容器管理持久化執(zhí)行準(zhǔn)則你的實(shí)體BEAN執(zhí)行方法應(yīng)該與容器管理持久性實(shí)體不同。不再是你為你的BEAN控制程序持久化操作,有許多方法可以為空容器會(huì)為你完成這些方法。表91是你在每個(gè)方法里應(yīng)該實(shí)現(xiàn)什么的一個(gè)概要,假定你的實(shí)體BEAN的持久性,是由容器管理的?,F(xiàn)在快速掃視圖91。正如你從表中所看到的,許多數(shù)據(jù)庫(kù)加強(qiáng)器操作在范圍上已明顯降低。,當(dāng)你讀完這一章中的代碼或當(dāng)你編寫你自己的實(shí)體BAN類時(shí),你應(yīng)該參考著對(duì)照表91。該方法的順序非常概略模型的列出了我們?cè)诘?章末尾看到的一個(gè)實(shí)體BEAN實(shí)例的控制流的生命周期。容器管理持久化舉例一個(gè)生產(chǎn)線讓我們來(lái)看一個(gè)在實(shí)際中容器管理持久化的快速演示,應(yīng)用這一概念的一個(gè)產(chǎn)品線。如果你為一家制造某種產(chǎn)品的公司工作,你的公司的生產(chǎn)線是一組由你的公司生產(chǎn)的產(chǎn)品。例如,如果你是一個(gè)家電公司,你可能會(huì)生產(chǎn)洗碗機(jī),爐灶和烘干機(jī)。如果你是一個(gè)電腦硬件公司,你可能會(huì)生產(chǎn)內(nèi)存,硬盤和處理器。我們將要使用一個(gè)實(shí)體BEAN模仿一個(gè)普通的產(chǎn)品,并使用容器管理持久化。我們的生產(chǎn)線的對(duì)象模型,詳見(jiàn)圖91。讓我們來(lái)看看每個(gè)我們必須為我們的實(shí)體BEAN構(gòu)成創(chuàng)建的文件。PRODUCTJAVAPRODUCTJAVA指定了我們的遠(yuǎn)程接口,見(jiàn)源代碼91。我們的遠(yuǎn)程接口與第八章中的銀行賬戶中的遠(yuǎn)程接口十分相似。它擁有修改實(shí)體BEAN實(shí)例作用域并拋出接口異常來(lái)顯示系統(tǒng)級(jí)的錯(cuò)誤的方法。PRODUCTHOMEJAVA接下來(lái),我們分析產(chǎn)品的主接口,PRODUCTHOMEJAVA,見(jiàn)源代碼92。我們的主接口定義了一個(gè)單一的CREATE方法在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)新產(chǎn)品。它返回一個(gè)產(chǎn)品的EJB對(duì)象,使客戶端可以操縱實(shí)體BEAN數(shù)據(jù),并拋出一個(gè)JAVAXEJBCREATEEXCEPTION顯示一個(gè)應(yīng)用級(jí)問(wèn)題。我們還給出各種搜索方法來(lái)查找現(xiàn)有的產(chǎn)品。一些查找方法返回一個(gè)單一的EJB對(duì)象,而另一些返回一個(gè)JAVAUTILENUMERATION來(lái)枚舉多個(gè)EJB對(duì)象。如果搜索方法找到一個(gè)以上匹配的對(duì)象這個(gè)方法是非常必要的。注意FINDBYPRIMARYKEY方法應(yīng)該永遠(yuǎn)不會(huì)返回一個(gè)枚舉,因?yàn)橹麈I必須是唯一的。PRODUCTPKJAVA我們的主鍵類由PRODUCTPKJAVA定義,見(jiàn)源代碼93。在我們的銀行賬戶中,我們的主鍵是一個(gè)簡(jiǎn)單的字符串。正如我們?cè)O(shè)定的我們對(duì)我們的主鍵的值有相應(yīng)的限制。我們的主鍵作用域來(lái)自由容器管理的作用域的實(shí)體BEAN類,并作為容器管理的持久化單元的必要部分。特別是,我們的主鍵代表一個(gè)產(chǎn)品的ID字符串(如一個(gè)產(chǎn)品SKU編號(hào))。PRODUCTBEANJAVA接下來(lái),我們來(lái)看我們?nèi)萜鞴芾韺?shí)體BEAN的執(zhí)行,PRODUCTBEANJAVA,見(jiàn)源代碼94。這個(gè)BEAN比我們的銀行賬戶的例子復(fù)雜得多。我們已經(jīng)定義了許多搜索方法,并且我們有四個(gè)持久性作用域。然而盡管我們已經(jīng)添加這一切的復(fù)雜性,我們的BEAN卻是我們的銀行賬戶BEAN大小的40。這是一個(gè)對(duì)代碼的復(fù)雜性了不起的減少。因?yàn)槲覀兊腂EAN中沒(méi)有數(shù)據(jù)庫(kù)代碼,我們減少了在我們的BEAN中出現(xiàn)BUG的可能,這應(yīng)歸于用戶錯(cuò)誤處理與JDBC的代碼。這樣可以節(jié)省巨大的開(kāi)發(fā)和測(cè)試時(shí)間。我們有4個(gè)容器管理的作用域,都是PUBLIC作用范圍。這樣容器可以操縱他們。我們的EJBCREATE方法向已通過(guò)進(jìn)入系統(tǒng)的客戶端參數(shù),簡(jiǎn)單地設(shè)定我們的容器管理作用域。EJB容器將提取這些作用域,并為我們從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)。注意,我們EJBCREATE方法并不返回一個(gè)主鍵,因?yàn)镋JB容器已經(jīng)為我們執(zhí)行了這樣的操作。我們BEAN中其余的只是空的方法和注釋。這些幾乎沒(méi)有邏輯可言。我們的BEAN類只是數(shù)據(jù)與一些存取器方法。CLIENTJAVA我們的客戶端代碼是一套簡(jiǎn)單測(cè)試案例,用來(lái)測(cè)試我們的BEAN,見(jiàn)源代碼95。我們執(zhí)行一個(gè)JNDI查找獲得有效的對(duì)象并創(chuàng)造一些實(shí)體BEAN數(shù)據(jù)。然后,我們嘗試一系列的搜索方法。我們可以通過(guò)循環(huán)調(diào)用搜索方法返回編號(hào)并可以對(duì)每個(gè)EJB的對(duì)象調(diào)用業(yè)務(wù)方法。最后,我們?cè)谖覀儎?chuàng)造的FINALLY子句中銷毀所有EJB對(duì)象。部署描述符我們現(xiàn)在需要編寫我們的部署描述符。除了界定標(biāo)準(zhǔn)實(shí)體BEAN作用域,我們現(xiàn)在還需要通知容器我們公共的容器管理作用域。部署描述符列在表92中。注意,我們不再有任何JDBC的明確應(yīng)用性能,因?yàn)槲覀円呀?jīng)向容器具體化數(shù)據(jù)庫(kù)的所有行為。除上述部署描述符,我們需要告訴容器到底履行持久化操作。這是一個(gè)容器管理持久化的交替使用你依然需要定義持久化規(guī)則,而不只是把他們添加到你使用JDBC或SQL/J編寫的BEAN中。如果你使用的是關(guān)系數(shù)據(jù)存儲(chǔ),你需要嚴(yán)格定義如何把你的實(shí)體BEAN的公共作用域映射到數(shù)據(jù)庫(kù)。因此,我們必須定義一系列的關(guān)系對(duì)象映射到實(shí)體。這些實(shí)體把實(shí)體BEAN作用域映射到關(guān)系型數(shù)據(jù)庫(kù)的字段。該EJB容器(在此我們使用的是BEA公司的WEBLOGIC)在向數(shù)據(jù)庫(kù)存儲(chǔ)或從數(shù)據(jù)庫(kù)中讀取我們的容器管理作用域時(shí)將利用這個(gè)映射。注意,這是這個(gè)特殊EJB容器的特性一些EJB的容器支持對(duì)象數(shù)據(jù)庫(kù),并因此將不會(huì)有一個(gè)二維關(guān)系型數(shù)據(jù)庫(kù)的映射。查詢你的EJB容器文檔可以獲取更多信息。我們使用BEA公司的WEBLOGICSERVER的生產(chǎn)線持久化的實(shí)體,列在表93中。我們還需要指定實(shí)現(xiàn)的是我
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物化學(xué)與藥物應(yīng)用測(cè)試題
- 陰道分娩考試試題及答案
- 六一兒童節(jié)商場(chǎng)活動(dòng)方案
- 六一咨詢活動(dòng)方案
- 醫(yī)學(xué)公招考試試題及答案
- 六一活動(dòng)冰棍活動(dòng)方案
- 六一活動(dòng)才藝秀活動(dòng)方案
- 六一活動(dòng)撒紙屋活動(dòng)方案
- 六一游船活動(dòng)方案
- 六一暢游活動(dòng)方案
- 中國(guó)鐵塔筆試題目及答案
- 招投標(biāo)員測(cè)試題及答案
- 工廠顏色標(biāo)識(shí)管理制度
- 校園電腦維修團(tuán)創(chuàng)業(yè)項(xiàng)目計(jì)劃書(shū)(正式)
- 租房學(xué)位合同協(xié)議書(shū)范本
- JG/T 368-2012鋼筋桁架樓承板
- 2025年環(huán)境科學(xué)與可持續(xù)發(fā)展綜合素質(zhì)評(píng)估測(cè)試題及答案
- 視頻編輯考試試題及答案
- solidworks考試試題及答案
- 合肥市公安局招聘警務(wù)輔助人員考試真題2024
- 康復(fù)科建設(shè)可行性方案
評(píng)論
0/150
提交評(píng)論