好像在cmp的结构中不是很支持多表的联合查询的!
在我看的有关cmp结构中直接定义的查询方法都是针对一个单表来实现的!要实现复杂的查询和多表之间的联合查询的话,必须使用bmp的结构!

解决方案 »

  1.   

    支持多表的联合查询,但是ejbql语法不是很丰富,与sql语句相比功能很差。
    建议复杂的查询直接使用jdbc 动态的写sql语句
      

  2.   

    谢谢楼上的朋友
    我觉得是不是有的时候查询不需要通过Entity Bean来实现,用DAO实现怎么样?
    另外:
    我正在设计编写一个查询对象生成器(一组类),在项目组之间复用。
    哪位朋友给点建议,关于必要行、可行性和实现的初步想法。
    谢谢您
      

  3.   

    或者在cmp中建立非常好的合理的关联关系,对整个系统的功能通盘考虑后,建立很少的,基本的查询,复杂的查询逻辑在程序中处理
      

  4.   

    谢谢dongjb(光速) 朋友!
    说的很好,EJBQL的确有功能上的限制。
    但是,这些sql语句写在什么样的类里面,这些类符合什么样的设计模式,是否可以复用呢?
    我很关心这些问题!
    还请大家多帮忙
      

  5.   

    cmp不支持多表联合查询,可用bmp模式,或者直接写sql 得了
      

  6.   

    用ejb实现大量的查询
    就会陷入效率陷阱
    findByPrimaryKey方法每次只能得到1条记录
    而这个调用本身消耗非常多的网络资源
    得不偿失cmp是被设计用来对单表作增删改的
    想作多表,大量,或者复杂的查询
    可以用dao实现
      

  7.   

    由于dao模式需要考虑很多技术,如事物的处理,而且无对象池管理大量的dao对象等很多因素。
    在选中ejb的前提下,cmp也有其优势,问题是怎样来解决它的缺点,既无法实现复杂的功能。
    在cmp中建立非常好的合理的关联关系,对整个系统的功能通盘考虑后,建立很少的,基本的查询,复杂的查询逻辑在程序中处理(sessionbean)
    至于采取模式进行复用的问题,由于ejb是组建技术,所以只能采用基于关联关系的模式