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

首頁 > 學院 > 開發(fā)設計 > 正文

專稿:實戰(zhàn)EJB之四 開發(fā)實體CMP(EJB 1.1規(guī)范)

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

實戰(zhàn)EJB系列



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



專稿:實戰(zhàn)EJB之四 開發(fā)實體CMP(EJB 1.1規(guī)范)(圖一)
點擊查看大圖


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



實戰(zhàn)EJB之四 開發(fā)實體CMP(EJB 1.1規(guī)范)


在前面的幾篇文章里我介紹了如何開發(fā)會話Bean,下面將向大家介紹如何開發(fā)Entity Bean,首先充實一些關(guān)于Entity Bean的基本知識。


實體(entity) bean用來代表底層的對象,最常用的是用Entity Bean映射關(guān)系數(shù)據(jù)庫中的記錄。在一個Entity Bean中,關(guān)系型數(shù)據(jù)庫的字段可以被一對一的映射到一個Entity
Bean中,而表與表之間的關(guān)系就可以看成是Entity Bean之間的關(guān)系。一個Entity Bean的實例可能會對應表中一個特定的行記錄描述或者對于一個查詢結(jié)果。比如我們在數(shù)據(jù)庫中設計了一個BOOK表,一個相對于BOOK表的Entity
Bean就可以封裝表中的部分或全部字段,當客戶端獲取一個Book Bean的實例引用時,就如同我們使用一個SELECT語句從數(shù)據(jù)庫中檢索了一條特定的關(guān)于一本圖書的記錄,并可以通過對象方法的方式去訪問記錄的值,當然你也可以使用remove方法去刪除這條記錄,用setXXX去改變某個字段的值,新的EJB
2.0查詢語言(EJB QL,EJB 2.0 query language)使你可以通過SELECT的方式直接從組件池中查詢Bean。


由于這種Bean對應于數(shù)據(jù)庫中的記錄,所以數(shù)據(jù)庫記錄的任何改變也應該被同步到我們的組件池中相關(guān)的Bean中,這個過程被成為持久性(persistencd),這是Entity
Bean最重要的一個特征。根據(jù)持久性的治理者的不同分為:容器治理持久性(CMP,Container-Managed Persistence)和Bean治理持久性(BMP,Bean-Managed
Persistence)。何謂容器治理者,就是在Bean與基礎數(shù)據(jù)庫表記錄值之間負責同步工作的操作者。


CMP Bean的持久性由EJB容器負責持,Bean開發(fā)者不需要參與操作數(shù)據(jù)庫的代碼部分,與數(shù)據(jù)庫的操作在部署EJB時由EJB部署者描述,由容器實現(xiàn)SQL操作和同步工作。BMP
Bean的持久性由Bean負責,也就是由Bean開發(fā)者負責與數(shù)據(jù)庫交互的代碼部分。


Entity Bean支持EJB的1.1和2.0規(guī)范,并且不能同時支持兩者,我們將按照規(guī)范1.1和2.0分別介紹BMP和CMP的特性,本節(jié)將主要介紹CMP
在EJB 1.1規(guī)范定義下的應用。當然上面的這些知識不足使你全部了解Entity Bean,你應該從相關(guān)的書籍或文章閱讀有關(guān)的介紹。


在本節(jié)中你將了解到:



  • EJB 1.1規(guī)范中的CMP
  • Entity Bean的壽命周期
  • 編寫一個EJB 1.1 的CMP程序
  • 部署到應用服務器
  • 開發(fā)和部署測試程序
  • 運行測試程序

EJB 1.1規(guī)范中的CMP


首先介紹一下容器持久性治理(CMP),然后介紹規(guī)范1.1中規(guī)定的CMP。


EJB結(jié)構(gòu)的一個重要優(yōu)點是EJB容器可以自動的為Entity Bean提供各種有用的功能,容器持久治理(CMP)可以使Bean開發(fā)者不用編寫一行對數(shù)據(jù)庫操作的代碼就可以完成對數(shù)據(jù)庫的基本操作,這樣可以簡化Bean的開發(fā),使我們集中于純業(yè)務邏輯部分,這也是EJB的一個目標。以為使用CMP方式編寫的Bean對于數(shù)據(jù)庫的操作是在部署時由部署者映射到實際的數(shù)據(jù)庫字段的,所以這樣就增強程序的移植性,CMP
Bean的不會為某種特定的數(shù)據(jù)庫去設計。假如你還對CMP不甚了解,下面可以幫助你迅速解答你一部分疑問:


CMP Bean如何連接到數(shù)據(jù)庫?


假如你是一個Bean的開發(fā)者,打消這個念頭吧,因為你已經(jīng)不許要考慮這些問題了!這些工作將在在部署B(yǎng)ean時由部署者為CMP Bean指定一個數(shù)據(jù)庫連接池的JNDI命名。java應用服務器提供數(shù)據(jù)庫連接池治理,并可以通過JNDI命名來獲得一個引用。當我們要改變數(shù)據(jù)庫類型或改變數(shù)據(jù)庫的連接地址時,只需從新配置這個數(shù)據(jù)庫資源即可。


CMP Bean如何映射一個數(shù)據(jù)表?


這是一個值得考慮的問題,因為這是你在設計一個具體應用是考慮使用CMP還是使用BMP的依據(jù)之一。在設計一個CMP Bean時,Bean被固定映射一個實體表,表中的每個指定字段被映射成bean的一個public型類變量,在實際開發(fā)中,只需要在Bean的實現(xiàn)類中聲明這些類變量,映射操作和SQL處理被交于部署者和容器自動完成。當然你可以迅速的開發(fā)出一個CMP
Bean,但可能會因為復雜的數(shù)據(jù)邏輯處理而放棄使用CMP Bean而采用BMP Bean,至少在規(guī)范1.1版本,對CMP Bean規(guī)范的定義帶來束縛還是比較大。


CMP Bean主鍵如何理解?


只有Entity Bean有主鍵,session調(diào)用主鍵方法將拋出一個異常。Entity Bean是數(shù)據(jù)面向數(shù)據(jù)對象的表示,每個Bean的實例代表一行記錄,所以就必須有一個主鍵來標識這個對象,以能夠?qū)ζ溥M行持久性操作。




發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 方城县| 光泽县| 定襄县| 通许县| 大安市| 新泰市| 鹰潭市| 江陵县| 西昌市| 三台县| 纳雍县| 兰溪市| 南木林县| 和硕县| 容城县| 拉孜县| 京山县| 若羌县| 闸北区| 保山市| 徐汇区| 武鸣县| 宣化县| 广州市| 晋中市| 微山县| 邵阳县| 塔城市| 耿马| 彭山县| 汽车| 忻州市| 张家港市| 汝州市| 宣城市| 金华市| 海原县| 双流县| 尤溪县| 攀枝花市| 望奎县|