EJB 2.0规范定义了实体Bean的查找器方法和select方法:
  查找器方法(Finder Method):查找器方法通过关系数据库系统从持久性存储系统中提取出一个实体Bean的实例,或者一个实体Bean实例的集合。这些方法将在实体Bean的Home接口列出,因此,客户程序可以看到它们。Home接口既可以是远程的EJBHome,也可以是本地的EJBLocalHome。在远程Home接口中,查找器方法的返回类型或者是实体Bean的远程接口,或者是一个实现实体Bean远程接口的对象的集合。在本地Home接口中,查找器方法的返回值类型或者是实体Bean的本地接口,或者是一个实现实体Bean本地接口的对象的集合。
  select方法(Select Method):在实体Bean中,select方法作为一种特殊类型的查寻方法存在。这些方法不在Home接口中声明,因此客户程序不能直接访问它们。对于访问cmp-field或者在cmr-field中定义的任何远程接口实例来说,查找器方法不是很有用。利用select方法,实体Bean可返回cmp-field类型的实例,或由cmr-field描述的远程接口。
  select方法通常有下面两种类型: ejbSelect 
ejbSelectInEntity 
例如: public abstract class OrderBean implements javax.ejb.EntityBean { ... public abstract java.util.Collection ejbSelectAllOrderedProducts(Date date) throws FinderException; ... public abstract java.util.Collection ejbSelectAllOrderedProductsInEntity(Date date) 
throws FinderException; 
} ejbSelect不关联到实体Bean的特定实例。因此,在上面的例子中,ejbSelectAllOrderedProducts方法返回一个集合,其中包含与所有订单关联的所有产品。ejbSelectInEntity面向特定的实体Bean实例执行,前面例子中的ejbSelectAllOrderProductsInEntity方法返回与该OrderBean实例关联的所有产品。

解决方案 »

  1.   

    只有两点区别:
    finder方法曝露接口给客户,可以给客户调用,
    select方法不曝露给客户,它只给cmp中的其他方法调用,不信你用jbuilder做一个cmp试试,看在remote里面有没有这个方法?
    select是不可以由客户直接调用的方法。
    在ejb2。0里
    select方法用的是sql语言
    如:
    select     *     from  employees where   employeesid=1
    finder方法用的是ejb ql语言
    如:
    select Object(o) from  employees where o.employeeid=1
      

  2.   

    还有,FINDER方法实在XML文件中写的,SELECT 方法是在你的代码中写的
      

  3.   

    请举一个EJB-SELECT方法调用的例子