国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

專稿:實(shí)戰(zhàn)EJB之五 開發(fā)實(shí)體BMP(EJB 1.1規(guī)范)

2019-11-18 15:24:59
字體:
供稿:網(wǎng)友

實(shí)戰(zhàn)EJB系列



在以后的日子里,將由Jackliu向大家陸續(xù)提供一系列EJB教程,有學(xué)習(xí)EJB的朋友請(qǐng)同步參考EJB相關(guān)書籍,實(shí)戰(zhàn)系列將以例程的方式幫助你理解這些基本的概念,其中將包括:



專稿:實(shí)戰(zhàn)EJB之五 開發(fā)實(shí)體BMP(EJB 1.1規(guī)范)(圖一)
點(diǎn)擊查看大圖


所有章節(jié)完畢后將制作成pdf電子文檔,供大家下載


 


實(shí)戰(zhàn)EJB之五 開發(fā)實(shí)體BMP(EJB 1.1規(guī)范)


前一節(jié)介紹了EntityBean的有關(guān)介紹,并通過開發(fā)、部署實(shí)體CMP的例子介紹EJB1.1規(guī)范的CMP的有關(guān)特性,在這一節(jié)中你將了解如下內(nèi)容:




  • EJB 1.1規(guī)范中的BMP
  • 編寫一個(gè)EJB 1.1 的BMP程序
  • 部署到應(yīng)用服務(wù)器
  • 開發(fā)和部署測(cè)試程序
  • 運(yùn)行測(cè)試程序


 



EJB 1.1規(guī)范中的BMP


根據(jù)規(guī)范中定義的EJB事務(wù)持久性(persistence)的特性被分為容器治理持久性(CMP)和Bean治理持久性(BMP)。雖然使用容器治理持久性給編程帶來極大的方便,但是將事務(wù)持久性交于容器來控制降低了Bean的開發(fā)能力;BMP的Bean具有靈活的業(yè)務(wù)處理能力和更靈活的持久性控制能力,常用來映射一些復(fù)雜的數(shù)據(jù)視圖或很難用CMP實(shí)現(xiàn)的復(fù)雜邏輯處理。


BMP的壽命周期和CMP的壽命周期治理機(jī)制是相同的,不同的是BMP的事務(wù)持久性治理機(jī)制交于Bean開發(fā)者,所以,在創(chuàng)建、更新、刪除等數(shù)據(jù)庫(kù)操作時(shí),兩種類型的Bean的順序圖是不一樣的。為了說明這一點(diǎn),可以從CMP和BMP在鈍化/激活順序圖中分析,當(dāng)然Bean的創(chuàng)建、查找、刪除也是不同的:


通過圖5-1和5-2的比較,我們很輕易會(huì)發(fā)現(xiàn):


CMP:當(dāng)一個(gè)Bean實(shí)例被客戶引用,并執(zhí)行一個(gè)業(yè)務(wù)方法后,容器會(huì)自動(dòng)讀取Bean的實(shí)例字段(還記得我們?cè)谏弦还?jié)在實(shí)現(xiàn)一個(gè)CMP時(shí),為Bean定義了映射到數(shù)據(jù)庫(kù)字段的Public型類字段嗎),然后,通過容器與數(shù)據(jù)庫(kù)發(fā)生關(guān)系,保存改變的數(shù)據(jù),執(zhí)行完畢后Bean被鈍化,并調(diào)用ejbPassviate()方法通知Bean。當(dāng)客戶過一端時(shí)間又調(diào)用這個(gè)Bean的某業(yè)務(wù)方法時(shí),被鈍化的Bean又重新的激活,但是并不是馬上執(zhí)行這個(gè)業(yè)務(wù)方法,而是由EJB對(duì)象首先調(diào)用ejbActivate()方法通知Bean,Bean實(shí)例要激活,然后從數(shù)據(jù)庫(kù)中提取數(shù)據(jù),并自動(dòng)將數(shù)據(jù)值映射到Bean實(shí)例,然后調(diào)用ejbLoad()方法,實(shí)例被再一次初始化,最后才開始執(zhí)行要執(zhí)行的業(yè)務(wù)方法,紅色箭頭和紅色時(shí)間塊做了明顯的表示。


BMP:當(dāng)一個(gè)Bean實(shí)例被客戶引用,并執(zhí)行一個(gè)業(yè)務(wù)方法后,容器會(huì)執(zhí)行Bean的ejbStore()方法,并由這個(gè)方法把數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中(下面的例子你將會(huì)發(fā)現(xiàn),我們不再為
Bean定義全局類變量,而是定義一些私有類變量),執(zhí)行完畢后Bean被鈍化,并調(diào)用ejbPassviate()方法通知Bean。當(dāng)客戶過一端時(shí)間又調(diào)用這個(gè)Bean的某業(yè)務(wù)方法時(shí),被鈍化的Bean又重新的激活,但是并不是馬上執(zhí)行這個(gè)業(yè)務(wù)方法,而是由EJB對(duì)象首先調(diào)用ejbActivate()方法通知Bean,Bean實(shí)例要激活,然后調(diào)用Bean的ejbLoad()方法,這個(gè)方法負(fù)責(zé)從數(shù)據(jù)庫(kù)中提取數(shù)據(jù),Bean實(shí)例被初始化,最后才開始執(zhí)行要執(zhí)行的業(yè)務(wù)方法。



專稿:實(shí)戰(zhàn)EJB之五 開發(fā)實(shí)體BMP(EJB 1.1規(guī)范)(圖二)
點(diǎn)擊查看大圖


<圖5-1 designtimesp=21804>


 



專稿:實(shí)戰(zhàn)EJB之五 開發(fā)實(shí)體BMP(EJB 1.1規(guī)范)(圖三)
點(diǎn)擊查看大圖


<圖5-2 designtimesp=21815>


BMP Bean要求所有的數(shù)據(jù)庫(kù)操作都要由Bean實(shí)例完成,這些方法基本上包括:


setXXX():因?yàn)锽MP不在為容器聲明public類型的由容器來治理的映射字段,所以setXX方法需要開發(fā)者實(shí)現(xiàn)


getXXX(): 取得Bean字段值


ejbCreate():在CMP中,由容器實(shí)現(xiàn),并返回一個(gè)NULL值,在BMP中必須由開發(fā)者自己實(shí)現(xiàn),返回創(chuàng)建記錄的主鍵值


ejbLoad(): 在CMP中,由容器實(shí)現(xiàn),在BMP中必須由開發(fā)者自己實(shí)現(xiàn),以實(shí)現(xiàn)組件非持久性狀態(tài)緩存持久性信息




發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 柘荣县| 大同市| 巨鹿县| 恩平市| 吉林省| 新余市| 龙江县| 兖州市| 新晃| 桦甸市| 新巴尔虎左旗| 都匀市| 景东| 中卫市| 贵溪市| 和平区| 中宁县| 贵定县| 南阳市| 阿拉善右旗| 和平县| 肃宁县| 广汉市| 依兰县| 平南县| 新绛县| 巫溪县| 白城市| 肥城市| 临海市| 丹江口市| 墨竹工卡县| 洱源县| 陇西县| 玛曲县| 县级市| 尤溪县| 岳普湖县| 曲水县| 明光市| 柞水县|