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

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

Beans入門必讀之實體bean介紹

2019-11-18 11:49:59
字體:
來源:轉載
供稿:網友

  永久性概念
  實體bean是個永久性的對象。
  java對象的連續性
  使用java對象,大多數的情況下,都需要捕捉對象當前工作的狀態,將它保存到永久性的存儲器中。實現這一點的一個辦法是使用object serialization。另一個辦法是使用傳統相關數據庫存儲java對象,例如sqlserver或Oracle
  
  什么是實體bean
  在成熟的多層的面向對象的配置中,可以劃分出兩種不同的組件配置:
  應用邏輯組件:這些組件是執行普通任務的方法提供者。
  持久的數據組件:這種對象可以將自己提交給永久性存儲器。
  Entity Beans實現接口javax.ejb.EntityBean,其描述了特定數據源中的數據,能長時間存在于EJB Container中,不會隨系統的意外中止而消失,并且可以讓多個客戶同時訪問。
  
  實體bean包含的文件
  實體bean類:是模擬持久數據的java類。一個實體bean類映射到在數據庫中的實體定義。
  實體bean的遠程接口:客戶端調用的bean的接口。其中,包含實體bean的每一個業務方法的描述。EJB容器商提供了用來實現遠程接口的工具。它的具體實現是實體bean的EJB對象。EJB對象代表了客戶端和bean之間間接的一層。客戶端直接調用EJB對象,用以達到調用實體bean的目的。因為EJB對象是容器的一部分。它包含截取方法調用的邏輯,治理在bean實例上所需的任務。這和會話bean是相同的。
  實體bean的home接口:客戶端使用它來建立、查找、破壞實體bean的EJB對象。EJB容器商提供了產生home接口的工具。它的具體實現是home對象。Home對象是EJB對象的工廠。客戶端必須執行JNDL定位找到home對象。這和會話bean也是相同的。
  實體bean的主鍵類:這是實體bean的非凡標識。主鍵使得實體bean各不相同。主鍵也是個對象,它可以包含大量的屬性。主鍵也可以是實體對象,
  實體bean的配置描述符:是容器配置使用到的屬性列表。
  實體bean的環境屬性:答應使用者在配置上定制實體bean。
  同會話bean一樣,也必須將這些文件打包成Ejb-jar文件。
  
  實體bean的特征
  生命期長
  恢復性
  實體bean的實例是數據庫的視圖
  不同的實體bean實例可以代表相同的數據
  實體bean的實例間可以共享
  
  EJB容器聚集了實體bean的實例
  實體bean必須實現以下兩種調用方法:
  ejbActivate()
  ejbPassivate()
  當實體bean被鈍化時,不僅僅要釋放資源,還要保存狀態:ejbStore()。相反還有ejbLoad()。實體bean和狀態bean在這方面是相同的,都有鈍化/激活過程。所不同之處在:ejbStore調用保存在鈍化時的狀態,ejbLoad()在激活期間裝載狀態。
  
  實體bean鈍化時保存狀態和激活時裝載狀態
  
  保持實體bean永久狀態的兩種方法
  一種方法是在bean中實現一套數據庫調用。例如可以通過JDBC執行sql語句。
  第二種方法是使用EJB容器,通過配置描述符通知容器bean的那些區域是持久性區域。
  實體bean可被建立、刪除和查找
  Entity Beans Can RePResent Legacy Data and Legacy Systems
  實體bean可以不通過EJB而進行修改
  
  Modifying an entity bean’s database representation manually.
  
  開發和使用實體bean
  實體bean必須實現javax.ejb.EntityBean,EntityBean接口繼續了javax.ejb.EnterpriseBean:
  public interface javax.ejb.EnterpriseBean implements java.io.Serializable {
  }
  javax.ejb.EnterpriseBean interface.
  public interface javax.ejb.EntityBean implements javax.ejb.EnterpriseBean {
  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.EntityBean interface.
  實體bean的建立:ejbCreate()
  ejbCreate()可以有許多的用法
  1、 不需要給實體bean寫ejbCreate()方法。這個方法對于實體bean時可選擇的。
  2、 參數可以是不同的。
  3、 必須在home接口中復制ejbCreate()方法。客戶端不直接調用bean,它們通過調用EJB對象代理。
  已存在實體bean的查找:ejbFind()
  有不同的查找方法。
  /**
  * Finds the unique bank account indexed by primary key key
  */
  public AccountPK ejbFindByPrimaryKey(AccountPK key)
  /**
  * Finds all the prodUCt entity beans. 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 bean-managed persistent entity bean and EJB object.
  查找的方法都是由ejbFind開始。
  至少有一個查找方法被ejbFindByPrimaryKey調用
  可以有許多不同名字和參數的不同的查找方法。
  客戶端不直接調用bean實例本身的查找方法。
  實體bean的破壞:ejbRemove()
  這個方法是無參數的。是所有的實體bean所必需的。
  
  Destroying an entity bean’s data representation.
  實體上下文
  對于會話bean,上下文接口是javax.ejb.sessionContext。對于實體bean,接口為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()
  
  實體bean的生命期
  Writing Bean-Managed Persistent Entity Beans
  Writing Container-Managed Persistent Entity Beans

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 怀柔区| 乐昌市| 巩义市| 桐柏县| 金华市| 柘荣县| 霍州市| 龙江县| 奉节县| 连山| 临漳县| 二连浩特市| 西林县| 朔州市| 锦州市| 禄丰县| 岱山县| 宝坻区| 利津县| 苏尼特左旗| 富锦市| 商丘市| 双峰县| 塔城市| 张家港市| 景谷| 昌宁县| 沁源县| 堆龙德庆县| 台前县| 谷城县| 蓝山县| 象州县| 陵川县| 南充市| 广汉市| 内江市| 天峻县| 临海市| 嵊州市| 连南|