用两个实体bean加一个会话bean,两个实体bean建立关系,一个能返回另一个对应id的数据信息,他们只实现本地借口,然后通过会话bean来查询实体bean和同客户端对话,从远程调用的角度,应该比你的思路快,况且只查询两个表。

解决方案 »

  1.   

    nuanfengls (暖风) 你好,
      你的问题很实际,但是不知道你说的两个表A,B他们之间到底是什么样的关系,是1:1 还是1:n
    还是:n:n:  看你的意思,应该是N:N了,
      如果你采用的是BmP开发的话,你可以采用两种方法来优化你的程序,
    BMP是Bean管理的持久性,那么它的生命周期的所用方法都由Bean的开发者来实现,在开发者实现Bean的时候就可以处理复杂的数据类型,(也就是可以自主的把复杂的数据类型映射到数据库中的相应的字段),同时开发者自己维护生命期的方法,那么在这些方法中,可以自己提供优化方法。我们知道BMP Bean一般是与数据库打联系,那么我们可以优化数据库的交互操作,减少与数据库的操作,这里我可以提供两种优化方法一种是用在ejbLoad()时的叫:赖装入:在这个方法中可以设置一比较大的字段等到需要时在从数据库中装入。第二种为用在ejbStore()时候:叫Modifed标志。也就是在BMP Bean本身的数据没有变化是,就没有必要与数据库进行同步操作。设置标志,只有等到某个字段变化是在选择ejbStore()方法同步数据库:÷你的第二个问题:
    我认为不可取:如果你是将A B中的相关信息字段有选择的添加到C中的话,那么对于三个表的根新
    是个问题,维护数据库的一直新也是问题!!
      

  2.   

    用BMP的话,自己写一个方法,使用一条SQL语句来实现多表查询(即将多个表映射到一个BMP中),虽然这样做系统结构不是太好,但是它的效率却是很高!
    详细做法可以参考《EJB编程指南》这本书中的“高级BEAN管理持久性”一章!