posts - 66,  comments - 11,  trackbacks - 0

          持久化實(shí)體Bean的兩種方式:
              既然需要將實(shí)體Bean映射到存儲(chǔ)源中,應(yīng)用肯定需要提供操作RDBMS的代碼。
              Bean管理持久化實(shí)體Bean,是手工完成持久化行為的EJB類型。換句話所,組件開發(fā)者必須開發(fā)代碼,以將內(nèi)存中的持久化域存儲(chǔ)到底層存儲(chǔ)源中。這種方式成為BMP。
              EJB規(guī)范還提供了BMP的替代組件類型:借助于EJB容器完成數(shù)據(jù)的持久化。這就是容器管理持久化(CMP)。此時(shí),通常都要將持久化邏輯從CMP中剝離出來。然后借助于容器提供的工具完成數(shù)據(jù)的自動(dòng)持久化。最后,EJB容器將生成訪問數(shù)據(jù)庫的代碼。注意,CMP是獨(dú)立于任何O/RMapping技術(shù)的數(shù)據(jù)對(duì)象,因此可以在各種企業(yè)環(huán)境中重用CMP組件。
              CMP極大減少了實(shí)體Bean的代碼量,因?yàn)椴挥弥苯泳帉慗DBC代碼了。EJB容器將會(huì)處理所有的持久化操作,這是EJB勢能應(yīng)用的優(yōu)勢之一。
              在執(zhí)行ejbCreate()方法期間,即在初始化內(nèi)存中的實(shí)體Bean時(shí),將會(huì)在底層RDBMS中插入新的記錄,并將這些記錄同實(shí)體Bean實(shí)例建立起映射關(guān)系。當(dāng)調(diào)用BMP實(shí)體Bean的ejbCreate()時(shí),它將負(fù)責(zé)生成RDBMS中的數(shù)據(jù)。類似的,當(dāng)調(diào)用BMP實(shí)體Bean的ejbRemo()時(shí),它將負(fù)責(zé)RDBMS中數(shù)據(jù)的刪除。

              在EJB領(lǐng)域中,客戶并沒有直接調(diào)用EJB實(shí)例,它們僅僅調(diào)用了EJB對(duì)象代理。借助于Home對(duì)象能夠生成EJB對(duì)象。因此,對(duì)于定義在EJB Bean類中的各個(gè)ejbCreate()方法,在Home接口中也將存在對(duì)象的create()方法。當(dāng)客戶調(diào)用Home對(duì)象的create()方法時(shí),容器將把調(diào)用請(qǐng)求委派給ejbCreate()方法。
              開發(fā)者可以通過多種方式查找實(shí)體Bean.需要在實(shí)體Bean的Home接口中列舉出這些查找方法。我們稱這些方法為"finder"方法。除了暴露創(chuàng)建、銷毀實(shí)體Bean實(shí)例的方法外,Home接口還需暴露finder方法。這是實(shí)體Bean的Home接口同其他EJB類型中的Home接口的最明顯區(qū)別。

              實(shí)體上下文,所有的EJB組件都存在上下文對(duì)象供組件訪問到容器環(huán)境使用。這些上下文對(duì)象含有EJB容器設(shè)置的環(huán)境信息。因此EJB組件能夠訪問到上下文,從而獲取各種信息,比如事務(wù),安全性信息。對(duì)于實(shí)體Bean而言,存在javax.ejb.EntityContext上下文接口。它繼承自EJBContext
          public interface javax.ejb.EntityContext extends javax.ejb.EJBContext{
           public javax.ejb.EJBLocalObject getEJBLocalObject();
           public javax.ejb.EJBObject getEJBObject();
           public java.lang.Object getPrimarykey();
          }
              通過調(diào)用getEJBObject()方法,當(dāng)前客戶能夠獲得某實(shí)體Bean實(shí)例對(duì)應(yīng)的EJB對(duì)象。客戶調(diào)用的是EJB對(duì)象,而不是實(shí)體Bean實(shí)例本身。因此,客戶能夠在應(yīng)用中引用返回的EJB對(duì)象。
              實(shí)體Bean實(shí)例對(duì)應(yīng)的主鍵可以通過getPrimaryKey()方法獲得。主鍵唯一標(biāo)識(shí)某實(shí)體Bean實(shí)例。當(dāng)實(shí)體Bean實(shí)例存儲(chǔ)到存儲(chǔ)源中時(shí),可以使用主鍵獲得單個(gè)實(shí)體Bean實(shí)例。由于在RDBMS中也存在主鍵,因此主鍵能夠唯一標(biāo)識(shí)某個(gè)實(shí)體Bean實(shí)例。

          posted on 2009-11-15 12:21 王永慶 閱讀(203) 評(píng)論(0)  編輯  收藏 所屬分類: EJB學(xué)習(xí)筆記
          <2009年11月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          關(guān)注blogs

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 类乌齐县| 福鼎市| 无棣县| 宜城市| 府谷县| 德令哈市| 荆门市| 马龙县| 威远县| 泌阳县| 台州市| 武强县| 略阳县| 勃利县| 佛学| 镇康县| 太和县| 灵石县| 简阳市| 秀山| 图们市| 临洮县| 嘉定区| 怀集县| 丁青县| 和林格尔县| 贵德县| 鄂伦春自治旗| 宜宾市| 永善县| 工布江达县| 白水县| 红河县| 马山县| 全南县| 金坛市| 林周县| 石门县| 无棣县| 容城县| 宣威市|