Entity Bean代表一个“实体”,它可以被序列化,可以长期存在。与之相对的是Session Bean,Session Bean不能序列化(有状态Session Bean可以将自己的状态序列化保存下来),生存周期比较短(等于或略大于该次对话的时间,取决于应用服务器的实现策略)。有一种形象的比喻:Entity Bean就像数据库中的一条记录,它是长期存在的,保存状态的;Session Bean就像SQL语句或者存储过程,它是无状态的,短期存在的。但没有“Entity Bean代表数据库中的一条记录”这样一种说法。只要长期存在的东西(例如一个雇员、一件货物),都可以用Entity Bean来表示。如果你想把“查询数据库”这个操作用EJB表示出来,似乎Stateless Session Bean会比较合适。

解决方案 »

  1.   

    我也想过这个问题,
    通常我们的做法就是用一个entity bean来代表一条数据由于使用像jbuilder7一类的能自动生成代码的工具
    使得一个entity bean对应数据库中一个表生成起来非常的方便所以如果想要对数据进行插入,单条记录的删除和更新,
    那么用entity bean就非常方便,而如果要进行查询操作的话,
    岂不是要生成很多bean(架设为1万条),这样服务器的效率不就太低了吗?这样还不如在Session bean里使用通常的方法,
    Connenction  ->  Statement -> RecordSet
    效率更高些
      

  2.   

    我也想过这个问题,
    通常我们的做法就是用一个entity bean来代表一条数据由于使用像jbuilder7一类的能自动生成代码的工具
    使得一个entity bean对应数据库中一个表生成起来非常的方便所以如果想要对数据进行插入,单条记录的删除和更新,
    那么用entity bean就非常方便,而如果要进行查询操作的话,
    岂不是要生成很多bean(架设为1万条),这样服务器的效率不就太低了吗?这样还不如在Session bean里使用通常的方法,
    Connenction  ->  Statement -> RecordSet
    效率更高些
      

  3.   

    返回值用collection或者用entity QL都可以,不过最好用session bean包装,要不然每次rpc性能是问题
      

  4.   

    楼上的已经说的很清楚了,ejb就是一个企业级的组件,他把插入删除修改查询都封装在一个ejb里面,查询结果当然可以返回多条记录,但是findByprimaryPk是返回一条记录的,你要利用查询,要定义自己的finder方法。
      

  5.   

    如果是查询,用stateless bean 生成valueobjcet的Collection返回吧。