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

首頁 > 學院 > 開發設計 > 正文

全面研讀EJB 2.0(2)

2019-11-18 13:47:33
字體:
來源:轉載
供稿:網友

  全面研讀EJB 2.0(2)

· EJB 2.0 的 CMP 模型

在 EJB 2.0 中,CMP 實體 bean 和持久性治理器之間的新合約,使您能夠在實體 bean 中定義更復雜的、可移植性更強的關系,包括 bean 與 bean 之間、bean 與從屬對象之間、甚至從屬對象與從屬對象之間的關系。

持久性治理器是新加入到 EnterPRise javaBeans 部署過程中的。容器廠商,或專長于特定數據庫的持久性的廠商,將能提供這種持久性治理器。其思路是將用于治理 bean 關系的機制從容器中分離出來,容器只負責治理安全、事務和資源。這種職責上的分離使不同的持久性治理器能夠與不同的容器一起工作。它也使實體 bean 在不同 EJB 廠商之間以及在各種持久性治理器之間具有更強的可移植性。

假如您使用或學習過 Thought Inc. 生產的,能自動為 EJB 1.1 容器生成 BMP(bean 治理的持久性)bean 的產品 CocoBase,則您對持久性治理器工具如何工作就已經比較熟悉了。CocoBase 根據 bean 部署者提供的,從對象到關系的映射信息,為 BMP bean 生成全部數據庫訪問邏輯。在 EJB 2.0 中,持久性治理器能夠根據部署描述符、bean 的抽象持久性方案和部署者完成的工作所提供的信息,生成 CMP 實體到關系數據庫的映射。但是,持久性治理器并不局限于關系數據庫。也可以為對象數據庫以及遺留的系統和 ERP 系統(如 SAP)開發持久性治理器。

為了將持久性治理器從容器中分離出來,必須定義 bean 與持久性治理器之間的合約。這個合約在新的抽象持久性方案中表現出來。此方案是通過部署描述符中一組新的 xml 元素和 CMP 實體 bean 中的一組代碼習語定義的。在 EJB 2.0 中,CMP bean 類被聲明為抽象類,它的持久性字段和關系字段是使用抽象的讀方法和寫方法來訪問的,而這兩種方法的方法特征則映射為 XML 部署描述符中的特定元素。

在部署該 bean 時,您將使用持久性治理器工具,根據 XML 部署描述符和 bean 類,來具體實現此抽象 bean 類及其從屬對象類。具體實現將包括數據訪問代碼,此代碼將在運行時將 bean 的狀態實際讀出和寫到數據庫中。在運行時,容器使用由持久性治理器工具生成的子類,而不使用 bean 提供者定義的抽象類。

bean 類的繼續層次結構

為了使討論更充實,這里提供一個 CMP 實體的示例,它更具體地說明了抽象持久性方案是如何工作的。

EJB 2.0 中的一個示例 CMP 實體
在 EJB 2.0 中,容器治理的實體 bean 被定義為抽象的,而且它的持久性字段并不在 bean 類中直接定義。作為替代,開發了一種抽象的持久性方案,從而答應 bean 提供者間接地聲明持久性字段和 bean 關系。下面是 Employee bean 的一個示例,它使用了新的抽象持久性方案。請注重,該 bean 類中未聲明任何持久性字段。

public abstract EmployeeBean implements
javax.ejb.EntityBean {
. // 實例字段
EntityContext ejbContext;
// 容器治理的持久性字段
public abstract void setIdentity(int
identity);
public abstract int getIdentity();
public abstract void setFirstName(String
firstName);
public abstract String getFirstName();
public abstract void setLastName(String
lastName);
public abstract String getLastName();
// 容器治理的關系字段
public abstract void
setContactInfo(ContactInfo info);
public abstract ContactInfo
getContactInfo();
...
}

在此 bean 的 XML 部署描述符中,抽象的持久性方案聲明容器治理的各個字段和各種關系。

<ejb-jar>
<enterprise-beans>
<entity>
<ejb-name>EmployeeEJB</ejb-name>
...
<persistence-type>Container</persistence-type>
...
<cmp-field><field-name>identity</field-name></cmp-field>
<cmp-field><field-name>firstName</field-name></cmp-field>
<cmp-field><field-name>lastName</field-name></cmp-field>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 保定市| 宾川县| 桂东县| 无棣县| 文山县| 利津县| 苏州市| 澎湖县| 龙游县| 河源市| 贺兰县| 正定县| 葫芦岛市| 砀山县| 萍乡市| 广东省| 称多县| 都匀市| 湖南省| 辽阳县| 遂宁市| 徐水县| 太仓市| 五华县| 合阳县| 二连浩特市| 安西县| 德兴市| 双桥区| 曲麻莱县| 于田县| 荃湾区| 额济纳旗| 东海县| 阳城县| 洛浦县| 霍城县| 旅游| 鸡西市| 安阳县| 牟定县|