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

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

教您如何成為 EJB 專家詳解系列連載之六

2019-11-18 12:35:04
字體:
來源:轉載
供稿:網友

  實體beans是個永久性的對象。使用java對象,大多數的情況下,都需要捕捉對象當前工作的狀態,將它保存到永久性的存儲器中。實現這一點的一個辦法是使用object serialization。另一個辦法是使用傳統相關數據庫存儲Java對象,例如sqlserver或Oracle
  
  什么是實體beans
  在成熟的多層的面向對象的配置中,可以劃分出兩種不同的組件配置:
  
  應用邏輯組件:這些組件是執行普通任務的方法提供者。
  持久的數據組件:這種對象可以將自己提交給永久性存儲器。
  Entity beanss實現接口Javax.ejb.Entitybeans,其描述了特定數據源中的數據,能長時間存在于EJB Container中,不會隨系統的意外中止而消失,并且可以讓多個客戶同時訪問。
  
  實體beans包含的文件
  實體beans類:是模擬持久數據的Java類。一個實體beans類映射到在數據庫中的實體定義。
  
  實體beans的遠程接口:客戶端調用的beans的接口。其中,包含實體beans的每一個業務方法的描述。EJB容器商提供了用來實現遠程接口的工具。它的具體實現是實體beans的EJB對象。EJB對象代表了客戶端和beans之間間接的一層。客戶端直接調用EJB對象,用以達到調用實體beans的目的。因為EJB對象是容器的一部分。它包含截取方法調用的邏輯,治理在beans實例上所需的任務。這和會話beans是相同的。
  
  實體beans的home接口:客戶端使用它來建立、查找、破壞實體beans的EJB對象。EJB容器商提供了產生home接口的工具。它的具體實現是home對象。Home對象是EJB對象的工廠。客戶端必須執行JNDL定位找到home對象。這和會話beans也是相同的。
  
  實體beans的主鍵類:這是實體beans的非凡標識。主鍵使得實體beans各不相同。主鍵也是個對象,它可以包含大量的屬性。主鍵也可以是實體對象, 實體beans的配置描述符:是容器配置使用到的屬性列表。
  
  實體beans的環境屬性:答應使用者在配置上定制實體beans。
  
  同會話beans一樣,也必須將這些文件打包成Ejb-jar文件。
  
  實體beans的特征
  生命期長
  恢復性
  實體beans的實例是數據庫的視圖
  不同的實體beans實例可以代表相同的數據
  實體beans的實例間可以共享
  
  EJB容器聚集了實體beans的實例,實體beans必須實現以下兩種調用方法:
  
  ejbActivate()
  ejbPassivate()
  
  當實體beans被鈍化時,不僅僅要釋放資源,還要保存狀態:ejbStore()。相反還有ejbLoad()。實體beans和狀態beans在這方面是相同的,都有鈍化/激活過程。所不同之處在:ejbStore調用保存在鈍化時的狀態,ejbLoad()在激活期間裝載狀態。實體beans鈍化時保存狀態和激活時裝載狀態,保持實體beans永久狀態的兩種方法,一種方法是在beans中實現一套數據庫調用。例如可以通過JDBC執行sql語句。第二種方法是使用EJB容器,通過配置描述符通知容器beans的那些區域是持久性區域。實體beans可被建立、刪除和查找,實體beans可以不通過EJB而進行修改
  
  開發和使用實體beans,實體beans必須實現Javax.ejb.Entitybeans,Entitybeans接口繼續了Javax.ejb.EnterPRisebeans:
  
  public interface Javax.ejb.Enterprisebeans implements Java.io.Serializable {
  }
  Javax.ejb.Enterprisebeans interface.
  public interface Javax.ejb.Entitybeans implements Javax.ejb.Enterprisebeans {
  public abstract void setEntityContext(Javax.ejb.EntityContext);
  public abstract void unsetEntityContext();
  public abstract void ejbRemove();
  public abstract void ejbActivate();
  public abstract void ejbPassivate();
  public abstract void ejbLoad();
  public abstract void ejbStore();
  }
  Javax.ejb.Entitybeans interface.
  
  實體beans的建立:ejbCreate();ejbCreate()可以有許多的用法:
  
  1、 不需要給實體beans寫ejbCreate()方法。這個方法對于實體beans時可選擇的。
  
  2、 參數可以是不同的。
  
  3、 必須在home接口中復制ejbCreate()方法。客戶端不直接調用beans,它們通過調用EJB對象代理。
  
  已存在實體beans的查找:ejbFind();有不同的查找方法。
  
  /**
  * Finds the unique bank account indexed by primary key key
  */
  public AccountPK ejbFindByPrimaryKey(AccountPK key)
  /**
  * Finds all the prodUCt entity beanss. Returns an Enumeration
  * of primary keys.
  */
  public Enumeration ejbFindAllProducts()
  /**
  * Finds all Bank Accounts that have at least a minimum balance.
  * Returns an Enumeration of primary keys.
  */
  public Enumeration ejbFindBigAccounts(int minimum)
  /**
  * Finds the most recently placed order
  */
  public OrderPK ejbFindMostRecentOrder()
  
  Creating a beans-managed persistent entity beans and EJB object.
  
  查找的方法都是由ejbFind開始。至少有一個查找方法被ejbFindByPrimaryKey調用,可以有許多不同名字和參數的不同的查找方法。客戶端不直接調用beans實例本身的查找方法。實體beans的破壞:ejbRemove()。這個方法是無參數的。是所有的實體beans所必需的。實體上下文對于會話beans,上下文接口是Javax.ejb.sessionContext。對于實體beans,接口為Javax.ejb.EntityContext。這兩個上下文接口都繼續了Javax.ejb.EJBContext接口:
  
  public interface Javax.ejb.EJBContext {
  public abstract Javax.ejb.EJBHome getEJBHome();
  public abstract Java.util.Properties getEnvironment();
  public abstract Java.security.Identity getCallerIdentity();
  public abstract boolean isCallerInRole(Java.security.Identity);
  public abstract Javax.jts.UserTransaction getUserTransaction();
  public abstract void setRollbackOnly();
  public abstract boolean getRollbackOnly();
  }
  Source Javax.ejb.EJBContext
  
  The Javax.ejb.EJBContext Interface’s Methods
  public interface Javax.ejb.EntityContext implements Javax.ejb.EJBContext {
  public abstract Javax.ejb.EJBObject getEJBObject();
  public abstract Java.lang.Object getPrimaryKey();
  }
  getEJBObject()
  getPrimaryKey()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 余姚市| 磐石市| 龙陵县| 鄯善县| 库车县| 赤水市| 葫芦岛市| 桦川县| 信宜市| 介休市| 连州市| 陇川县| 乾安县| 凤台县| 高安市| 三门峡市| 巴里| 红安县| 东方市| 新郑市| 长白| 涞源县| 郸城县| 苍南县| 拉孜县| 白山市| 新化县| 城口县| 金阳县| 平安县| 霸州市| 东台市| 延川县| 和静县| 吉首市| 横山县| 民和| 黑龙江省| 三穗县| 垫江县| 阳春市|