熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

用內嵌類減少 JAVA 程序設計中的混亂

2013-11-23 18:46:05  來源: Java核心技術 

  實體beans是個永久性的對象使用Java對象大多數的情況下都需要捕捉對象當前工作的狀態將它保存到永久性的存儲器中實現這一點的一個辦法是使用object serialization另一個辦法是使用傳統相關數據庫存儲Java對象例如sqlserver或oracle
  
  什麼是實體beans
  在成熟的多層的面向對象的配置中可以劃分出兩種不同的組件配置
  
  應用邏輯組件這些組件是執行普通任務的方法提供者
  持久的數據組件這種對象可以將自己提交給永久性存儲器
  Entity beanss實現接口JavaxejbEntitybeans其描述了特定數據源中的數據能長時間存在於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一樣也必須將這些文件打包成Ejbjar文件
  
  實體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必須實現JavaxejbEntitybeansEntitybeans接口繼承了JavaxejbEnterprisebeans:
  
  public interface JavaxejbEnterprisebeans implements JavaioSerializable {
  }
  JavaxejbEnterprisebeans interface
  public interface JavaxejbEntitybeans implements JavaxejbEnterprisebeans {
  public abstract void setEntityContext(JavaxejbEntityContext);
  public abstract void unsetEntityContext();
  public abstract void ejbRemove();
  public abstract void ejbActivate();
  public abstract void ejbPassivate();
  public abstract void ejbLoad();
  public abstract void ejbStore();
  }
  JavaxejbEntitybeans interface
  
  實體beans的建立ejbCreate()ejbCreate()可以有許多的用法
  
   不需要給實體beans寫ejbCreate()方法這個方法對於實體beans時可選擇的
  
   參數可以是不同的
  
   必須在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 beansmanaged persistent entity beans and EJB object
  
  查找的方法都是由ejbFind開始至少有一個查找方法被ejbFindByPrimaryKey調用可以有許多不同名字和參數的不同的查找方法客戶端不直接調用beans實例本身的查找方法實體beans的破壞ejbRemove()這個方法是無參數的是所有的實體beans所必需的實體上下文對於會話beans上下文接口是JavaxejbSessionContext對於實體beans接口為JavaxejbEntityContext這兩個上下文接口都繼承了JavaxejbEJBContext接口
  
  public interface JavaxejbEJBContext {
  public abstract JavaxejbEJBHome getEJBHome();
  public abstract JavautilProperties getEnvironment();
  public abstract JavasecurityIdentity getCallerIdentity();
  public abstract boolean isCallerInRole(JavasecurityIdentity);
  public abstract JavaxjtsUserTransaction getUserTransaction();
  public abstract void setRollbackOnly();
  public abstract boolean getRollbackOnly();
  }
  Source JavaxejbEJBContext
  
  The JavaxejbEJBContext Interfaces Methods
  public interface JavaxejbEntityContext implements JavaxejbEJBContext {
  public abstract JavaxejbEJBObject getEJBObject();
  public abstract JavalangObject getPrimaryKey();
  }
  getEJBObject()
  getPrimaryKey()
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25696.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.