其实对CMP大量查询的解决办法就是不用CMP,用session bean + jdbc就可以了。CMP本身并不适合用来作大量查询,所以你很难试图根本上解决这个问题。不过CMP比BMP的好处是,CMP在find方法中可以利用底层O/R机制构造一次sql语句,而不是很多次sql语句。比如:findAll(),如果DB中有1000条记录,BMP就进行1001次sql查询(1次select id from table,1000次select * from table where id = ?),而CMP只进行一次。在查询不是很复杂的情况下还是可以的。
CMP与jdo不是一个重要级的东西,我不知道sun是否说过这样的话,即使说过,也是有一定前提的,不要断章取义。据我所知:JDO好象不支持事务传递、安全传递等一系列分布式的企业级组件的管理功能,也就是说它们根据不能算一个层次的东西,大家的设计目标、应用前景也都不一样,两者有一定的交叉,但绝不可替代。我也没看过JDO规范,如果我对JDO的理解有错,别乱扔砖头,我也是听说的:)