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

容器管理持续化示例

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


public abstract Collection getTeams(); 
public abstract void setTeams(Collection teams);

  Select方法

  一个select方法与一个finder方法具有以下几个共同点:

  1、一个select方法查询一个数据库并返回一个对象。

  2、部署描述为一个select方法指定了一个EJB QL查询。

  3、entity bean类不实现select方法。

  但是,一个select方法与finder方法还存在以下不同点:

  1、一个select方法可以返回持续化字段或相关entity bean的home接口。而一个finder方法只能返回定义它的home接口(或结果集)。

  2、因为一个select方法不存在于任何local或remote接口中,所以它不能被客户端调用。它仅仅只能被entity bean类中实现的方法调用。一个select方法通常是被一个商业方法调用。

  3、一个select方法在entity bean类中定义。对于bean管理持续化,一个finder方法被定义在entity bean类中,但是在容器管理持续化不存在这样的方法。

  PlayerBean类定义了这些select方法:


public abstract Collection ejbSelectLeagues(LocalPlayer player) 
throws FinderException; 
public abstract Collection ejbSelectSports(LocalPlayer player) 
throws FinderException;

  一个select方法必须遵守这些规则:

  1、方法名的前缀必须为ejbSelect。

  2、访问控制修饰必须为public。

  3、方法必须申明为abstract。

  4、throws子句必须包含javax.ejb.FinderException。

  商业方法

  因为客户端不能调用select方法,PlayerBean类将其包装在getLeagues和getSports商业方法中:


public Collection getLeagues() throws FinderException { 
 LocalPlayer player = 
 (team.LocalPlayer)context.getEJBLocalObject(); 
 return ejbSelectLeagues(player); 
} 
public Collection getSports() throws FinderException { 
 LocalPlayer player = 
 (team.LocalPlayer)context.getEJBLocalObject(); 
 return ejbSelectSports(player); 
}

  Entity Bean方法

  因为容器会处理持续化,所以在PlayerBean类中几乎没有生命周期方法。

  ejbCreate方法通过将输入参数赋予持续化字段以对bean的实例进行初始化。在ejbCreate方法完成后,容器会向数据库中插入一行。下面是ejbCreate方法的源代码:


public String ejbCreate (String id, String name, 
String position, double salary) throws CreateException { 
setPlayerId(id); 
setName(name); 
setPosition(position); 
setSalary(salary); 
return null; 
}

  除了一个调试语句以外,PlayerBean类的ejbRemove方法没有其它内容。在删除数据库行之前,容器会调用正确的ejbRemove方法。

  ejbPostCreate方法必须与ejbCreate方法具有相同的输入参数和返回类型。如果你想要设置一个关联字段以初始化bean的实例,你应该在ejbPostCreate方法中完成这些工作。你不可以在ejbCreate方法中设置一个关联字段。

  容器自动执行entity bean状态和数据库的同步。在容器从数据库中导入bean的状态后,它会调用ejbLoad方法。同样地,在将状态存储到数据库之前,容器会调用ejbStore方法。

  Local Home接口

  local home接口定义了可以由本地客户端调用和create方法、finder方法和home方法。

  一个create方法的语法规则如下:

  1、命名以create开始。

  2、它和entity bean类中匹配的ejbCreate方法有相同的数目和类型的参数。

  3、它返回entity bean的local接口。

  4、throws子句包含相应的ejbCreate方法中的throws子句中指定的例外。

  5、throws子句包含javax.ejb.CreateException。

  这些规则适用于一个finder方法:

  1、命名以find开始。

  2、返回类型是entity bean的local接口类型或是这些类型的结果集。

  3、throws子句包含javax.ejb.FinderException。

  4、必须定义findByPrimaryKey方法。

  下面是LocalPlayerHome接口的片断。


package team; 
import java.util.*; 
import javax.ejb.*; 
public interface LocalPlayerHome extends EJBLocalHome { 
public LocalPlayer create (String id, String name, 
String position, double salary) 
throws CreateException; 
public LocalPlayer findByPrimaryKey (String id) 
throws FinderException; 
public Collection findByPosition(String position) 
throws FinderException; 
 . . . 
public Collection findByLeague(LocalLeague league) 
throws FinderException; 
... 
  }

  Local接口

  这个接口定义了一个本地客户端可以调用的商业方法和访问方法。PlayerBean类实现了两个商业方法:getLeagues和getSports。它还定义了几个针对持续和关联字段的get和set访问方法。set方法对于bean的客户端是不可见的,因为它们没有定义在LocalPlayer接口中。但是,get方法是客户端可以通过接口访问的:



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



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

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章