欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

EJB設(shè)計模式實例分析-創(chuàng)新互聯(lián)

這篇“EJB設(shè)計模式實例分析”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“EJB設(shè)計模式實例分析”文章吧。

創(chuàng)新互聯(lián)是一家專業(yè)提供佛山企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、做網(wǎng)站、H5頁面制作、小程序制作等業(yè)務(wù)。10年已為佛山眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進行中。

就像我們在設(shè)計模式4中看到的, Entity Bean的實現(xiàn)大小被縮減到在EJBCreate(), getData()
and setData()方法中的僅僅幾行,不管CMP字段的數(shù)目.
下一步是建模公司和雇員的Entity Beans,這個有點繁瑣而且建議讀者先對borland
公司的OR Mapping和高級CMP有所了解.

對這個關(guān)系建模根本不需要對結(jié)構(gòu)的代碼變化,然而Entity Beans實現(xiàn)類需要一點點
修改來反映兩個實體間的關(guān)系,鑒于此Deployment Descriptor需要有小的修改.
象以前, Entity Bean從結(jié)構(gòu)繼承,下面是公司Entity Bean的代碼片段:
public class CompanyBean extends CompanyStruct
implements EntityBean {
EntityContext entityContext;
// CMP for all fields in the CompanyStruct
public Java.util.Collection employees; //one-to-many
//rest of the code including getData() and setData()
public java.util.Collection getEmployees() {
return employees;
}
}
下面是雇員Entity Bean的程序片段:
public class EmployeeBean extends EmployeeStruct
implements EntityBean {
EntityContext entityContext;
//CMP for all fields in EmployeeStruct EXCEPT
//the comId
public Company company;//remote reference to company
}
在上面的程序片段中,雇員Entity Bean從雇員結(jié)構(gòu)繼承,雇員結(jié)構(gòu)本身有
一個字段comId表示雇員和公司之間的的外鍵,在所有的前面的設(shè)計模式中,
這個字段是CMP的.而在設(shè)計模式5中這個字段用在Deployment Descriptor中
un-checking的方法從CMP中去掉.而對公司Entity Bean的遠程引用現(xiàn)在是CMP的.
現(xiàn)在的問題是怎么在getData()和SetData()方法中更新公司Entity Bean的引用,
當這些方法只get和set comId(在設(shè)計模式上下文中沒有被CMP)的值.
簡單的說,過程的結(jié)構(gòu)沒有變化并且字段comId(不再CMP)在RPC中被拷貝到
Entity Bean和從Entity Bean拷貝出來.需要的是對公司Entity Bean的遠程
引用在必須被寫入數(shù)據(jù)庫和從數(shù)據(jù)庫讀出時更新.我們需要用ejbLoad()和ejbStore()
方法在Entity Bean實現(xiàn)類中為我們完成這項工作.
在雇員Entity Bean中的ejbLoad()方法的代碼片段如下:
public void ejbLoad() {
try {
comId=(company ==
null)?null:(Integer)company.getPrimaryKey();
} catch (Exception e) {
//throw some runtime exception (e.g. EJBException)
}
}
以上代碼幾乎不需要解釋.當數(shù)據(jù)被從數(shù)據(jù)庫中讀出(在事務(wù)的開始時候),
comId(不是CMP)字段在雇員Entity Bean被set.因此當getData()方法被調(diào)用時,
返回的結(jié)構(gòu)將包含正確地comId的值.
在雇員Entity Bean中的ejbStore()方法如下:
public void ejbStore() {
try {
company = (comId ==
null)?null:beanGlossary.getCompanyHome().findbyPrimary
Key(comId);
} catch (Exception e) {
//throw some runtime exception (e.g. EJBException)
}
}
ejbStore()在事務(wù)結(jié)束當數(shù)據(jù)被寫入數(shù)據(jù)庫時被調(diào)用.在這種情況下,comId的值
被修改(通過調(diào)用setData方法),this必須被寫到數(shù)據(jù)庫中.在上面方法中的代碼
把comId轉(zhuǎn)化成公司的遠程引用.(畢竟comId是公司Entity Bean的主鍵).
使用空check的原因是數(shù)據(jù)庫不能存空值(表之間的弱引用),并且這些同樣需要建模.
任何情況下,用java對基本類型的封裝要比使用基本類型自己好,因為他們能
存空值而且易于轉(zhuǎn)換成其他形式.
上面的BeanGlossary類的代碼片斷容易引起一些混淆.
這實際上是一個捕獲EJB的lookup的utility類(一個無狀態(tài)session bean),
在entity bean和有狀態(tài)session bean的情況下,Home接口的lookup是被緩沖的.
在無狀態(tài)session bean的情況下,Remote接口是被緩沖的(作為ejb規(guī)范1.1的一部分,
一個SLSB在Home接口中調(diào)用的create()是不被優(yōu)化的).
通過在上面上下文的緩沖,我們意思是第一個請求是被lookup的.隨后的調(diào)用是得到
已經(jīng)在對象引用中初始化的home接口或remote接口.
BeanGlossarySB utility類的代碼片段如下:
public class BeanGlossarySB implements SessionBean {
private Context context = null;
public javax.naming.Context getContext() throws
NamingException {
if (context == null)
context = new javax.naming.InitialContext();
return context;
}
// Company
private CompanyHome companyHome = null;
public CompanyHome getCompanyHome() throws
NamingException {
if (companyHome == null)
companyHome = ((CompanyHome)
javax.Rmi.PortableRemoteobject.narrow(
getContext().lookup("java:comp/env/ejb/Company"),
CompanyHome.class));
return companyHome;
}
// rest of the EJBs
}
在設(shè)計模式5中,我們沒有處理Entity Bean的Home接口.
在雇員Entity Bean的情況下, 會有一個finder元素在
findEmployeesByCompany(Company pCompany)的幾行中,
這將會返回雇員遠程引用的集合. 在公司Entity Bean 中的Deployment
Descriptor map了在上面定義的finder元素的雇員集合.
這樣,在公司Entity Bean中的方法getEmployees()在remote接口中的調(diào)用
返回需要的與那家公司相聯(lián)系的遠程引用的雇員的集合.

以上就是關(guān)于“EJB設(shè)計模式實例分析”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。

文章標題:EJB設(shè)計模式實例分析-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://aaarwkj.com/article32/ccjopc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、微信小程序做網(wǎng)站、網(wǎng)站設(shè)計公司用戶體驗、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
日本加勒比系列在线播放| 91人妻精品丰满少妇区| 一本之道高清久久久首页| 日本高清免费中文字幕| 男人一插就想射的原因| 精品国产不卡在线观看| 亚洲免费成人一区二区| 国产三级传媒视频在线观看| 99热这里只有精品在线| 国产三级视频在线观看视频| 国语对白刺激真实精品| 中文字幕在线精品乱码麻豆| 人成在线免费视频网站| 九九热精品视频美谷朱里| 小明久久国内精品自线| 国内久久婷婷综合五月趴| 日韩一区二区三区无吗电影| 蜜臀久久精品国产综合| 日韩欧美一区二区麻豆| 欧洲亚洲国产一区二区| 91精品免费播放在线观看| 色哟哟视频免费在线观看| 中国女人内射69xx| 成人国产视频免费观看| 欧美色精品人妻视频在线| 91麻豆精品国产自产| 欧美激情亚洲一区二区| 成人永久免费播放平台| 日麻批视频在线免费观看| 亚洲一区成人精品在线| 亚洲国产高清国产拍精品| 亚洲人成免费观看网站| 日韩免费毛片在线观看| 亚洲美女插入av网络导航| 蜜臀一二区免费在线视频| 一区二区三区视频在线国产| 国产精品久久久久精品三级下载| 日韩一区二区三区av观看| 六月丁香花五月婷婷| 亚洲精品国产精品乱码| 国产精品日韩欧美亚洲|