Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

容器管理持续化示例

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  1、在你创建两个entity beans之间的一个关联关系前,你必须首先使用New Enterprise Bean向导创建这两个bean。

  2、要显示Relationships标签,选中EJB JAR并选择Relationships标签。

  3、要增加或编辑一个关联关系,到Relationships标签下单击相应按钮。

  4、显示Add(或Edit) Relationship对话框(Add Relationship对话框和Edit Relationship对话框是一样的。)

  在Edit Relationship对话框(TeamJAR)中有一个示例。

  容器管理持续化的主键

  如果主键类不属于J2SE或J2EE标准库,那么你必须自己实现这个类并将其随同entity bean一起打包。例如,如果你的entity bean需要一个复合的主键(由多个字段组成),那么你必须提供一个自定义的主键类。

  主键类

  在下面的示例中,PurchaseOrderKey类实现了PurchaseOrderEJB这个entity bean的复合主键。这个主键由两个字段productModel和vendorId组成,它们的命名必须匹配entity bean类中的两个持续化字段。


public class PurchaseOrderKey implements java.io.Serializable { 
public String productModel; 
public String vendorId; 
public PurchaseOrderKey() { }; 
public String getProductModel() { 
return productModel; 
} 
public String getVendorId() { 
return vendorId; 
} 
public boolean equals(Object other) { 
if (other instanceof PurchaseOrderKey) { 
   return (productModel.equals( 
   ((PurchaseOrderKey)other).productModel) && 
   vendorId.equals( 
   ((PurchaseOrderKey)other).vendorId)); 
} 
return false; 
} 
public int hashCode() { 
return productModel.concat(vendorId).hashCode(); 
} 
}

  对于容器管理持续化的情况,一个主键类必须满足以下条件:

  1、类的访问控制修饰是public。

  2、所有字段声明为public。

  3、字段是bean的持续化字段的子集。

  4、类有一个public类型的默认的构造函数。

  5、类实现hashCode()方法和equals(Object other)方法。

  6、类可序列化。

  Entity Bean类中的主键

  在PurchaseOrderBean类中,下面的访问方法定义了组成主键的持续化字段(vendorId和productModel):


public abstract String getVendorId(); 
public abstract void setVendorId(String id); 
public abstract String getProductModel(); 
public abstract void setProductModel(String name);

  下面的代码说明了PurchaseOrderBean中的ejbCreate方法。ejbCreate方法的返回值类型是主键,但是返回值是null。尽管不是必须的,但是null返回值在容器管理持续化中是被推荐的。这种做法可以节省开销,这是因为bean可以不必为了返回值对主键类进行例示。


public PurchaseOrderKey ejbCreate (String vendorId, 
String productModel, String productName) 
throws CreateException { 
setVendorId(vendorId); 
setProductModel(productModel); 
setProductName(productName); 
return null; 
}

  生成主键值

  对于有些entity bean,主键的值代表着一个商业实体。例如,在一个表现对一个支持中心的电话呼叫的entity bean中,主键可能包含一个时间戳,它反映了接收到呼叫的时间。但是对一起另外一些bean,主键的值可能是随机的--只要保证它是唯一的。在容器管理持续化中,主键的值可以由EJB容器自动生成。要利用这个功能,一个entity bean必须满足以下条件:

  1、在部署描述中,主键类被定义为一个java.lang.Object。不能指定主键字段。

  2、在home接口中,findByPrimaryKey方法的参数必须是java.lang.Object。

  3、在entity bean类中,ejbCreate方法的返回值必须是java.lang.Object。

  在这些entity bean中,主键值位于一个内部区域,只有EJB容器可以对其进行访问。你不能将主键与一个持续化字段或其它实例变量发生联系。但是,你可以通过调用getPrimaryKey方法以获得bean的主键,你也可以通过调用bean的findByPrimaryKey方法以对其进行定位。




 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:在GoF模式以外(1)   下一篇:Bean管理持续化实例

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号