UML软件工程组织

EJB的实体组件(2)
作者:苏洋    本文选自:赛迪网  2002年12月12日

当EJB组件处于实例化引用状态时,客户端应用可以调用remove方法来删除EJB容器中的组件对象实例,将EJB组件的状态转换为非实例化引用状态,进一步利用释放引用方法将组件的状态转换为非实例化非引用状态。

为了对实体类型EJB组件的状态进行转换,在实体类型EJB组件对象的Home接口中定义了相应的组件生命期控制方法,在后续讲座中将对这些方法的构建方式和调用过程进行详细讲解。

实体组件类定义

在javax.ejb包中定义的EntityBean接口是组件管理持久性和容器管理持久性实体类型EJB组件共同的父接口对象。在该接口中定义了用于删除组件对象实例、设置和清除实体组件上下文、EJB容器同步组件类成员变量和相应数据库字段的方法。该接口的定义如下:

public interface javax.ejb.EntityBean extends javax.ejb.EnterpriseBean{
public abstract void ejbActivate() throws RemoteException;
public abstract void ejbPassivate() throws RemoteException;
public abstract void ejbLoad() throws RemoteException;
public abstract void ejbStore() throws RemoteException;
public abstract void ejbRemove() throws RemoteException;
public abstract void setEntityContext(EntityContext ctx)
throws RemoteException;
public abstract void unsetEntityContext() throws RemoteException;
}

与SessionBean接口类似,该接口继承EnterpriseBean接口,其中定义的ejbActivate和ejbPassivate方法用于将组件对象实例在激活和关闭状态之间转换、ejbRemove方法用于EJB容器调用删除组件对象实例、ejbLoad和ejbStore方法用于EJB容器同步组件类成员变量和数据库记录中的相应字段、setEntityContext和unsetEntityContext方法用于设置和清除组件对象实例中的实体上下文。

实体类型EJB组件持久性管理方式

EJB规范定义实体类型EJB组件的目的是在J2EE分布式应用系统中,在EJB服务器端创建诸如关系数据库等资源管理系统的对象类型镜像。为了提高组件创建方式的灵活性,EJB规范定义了两种类型的实体组件持久性管理方式:容器管理持久性和组件管理持久性。

容器管理持久性

容器管理持久性实体类型EJB组件的开发过程中,组件程序设计人员不需要为组件持久性管理方法编写数据库操作代码,而是在组件部署过程中由部署工具来创建访问数据库等资源系统的代码。这种类型EJB组件的优势在于实体组件对资源系统的访问方式与资源系统类型无关,极大程度地增加了实体组件的应用领域适应性和组件部署的灵活性。

EJB2.0规范引入了持久性管理器(Persistence Manager)对象,用于将实体类型EJB组件映射到资源系统中存储的数据资源以及引入一种全新的EJB QL语言,实现实体组件镜像数据资源的选择、定位和更新。

组件管理持久性

在组件管理持久性实体类型EJB组件的持久性管理方法中,组件程序设计人员必须编写用于在实体组件的数据成员和镜像数据库记录之间进行数据传输的代码。显而易见,组件管理持久性实体类型EJB组件与组件代表的资源系统密切相关。如果一个EJB组件表示关系数据库中的数据记录,那么,在组件移植过程中就很难使之适应对象类型数据库或者ERP应用系统等企业遗留(Legency)系统。但是,这种类型EJB组件的构造方式比较灵活,可以依据系统功能的特殊需求来编写组件持久性控制代码。

下一讲中,我们将详细讲解组件管理持久性实体类型EJB组件,请您继续关注开发者频道。

(责任编辑 Sunny)



版权所有:UML软件工程组织