我是从MS阵营转到J2EE不久,先发表一下个人看法一、CMP优点
1、CMP的实现可以做一个O/R映射,使用起来很方便,而且符合数据库发展方向——面向对象数据库。2、一些常用的EJB容器中的CMP是内嵌了内存数据库,将数据放在在内存中,然后可以在SESSION BEAN中用EJBQL把CMP BEAN当做表来查询,从而达到很少连接数据库的目的。3、CMP支持将数据回写入数据库中,这样就弥补了原来用Vector等方法不方便回写的缺憾,同时可以采用惰性装载和B-commit来进行优化事务处理。4、CMP可以使存储过程和事务管理从数据库层剥离出来,让数据库任务更纯粹,而且让系统几乎达到与DBMS无关,减少了移植J2EE项目的难度。缺点:
1、要将一个CMP配置好、优化好很困难,需要看很多专门的EJB容器的资料(不过JBOSS就好了,可以看源码了:-))参考资料:
1、JBOSS 3.2 源码与JBossCMP.pdf
2、今年程序员杂志第三期中JBOSS创始人的一篇文章

解决方案 »

  1.   

    是ejb中实体bean的一种,是容器自己管理,所以效率比较高,安全性也比较,但是基本上不用写代码,所以他的灵活性差一点,我个人认为它只适合做单表查询
      

  2.   

    to sandyen(杉叶):
    在JBOSS中好像可以利用DymicEJBQL来弥补灵活性差这个缺点
      

  3.   

    如果要作大规模的查询比如检索几个表作报表的时候,就不要使用cmp,直接使用session bean就可以了
      

  4.   

    to wobensuren(丑得杀死你)
    好像实际中的这种情况用SESSION BEAN的确好些,但不清楚原因是什么
      

  5.   

    to mefaintII(我晕)
    我觉得从CMP2开始已经有所改善,而且不同的EJB容器都对CMP2规范做了扩充,从而提高性能
      

  6.   

    我觉得cmp很轻松,不需要考虑太多的系统方面的事情。
    象数据一致,是我很头痛的一个东西。
    但cmp 就不用管哪么多
      

  7.   

    我只用Weblogic,听说即便是Bea的人也承认他们的容器管理做得非常不理想。我的感觉是做cmr的时候还是不方便不过我做数据比较少,只是单纯的感觉Session Bean + DAO模式在作复杂表关联的时候
    比较好用
      

  8.   

    to dentance(登徒子)
    是呀,CMP给我们带来最大的好处之一就是简化了编程,方便了管理
      

  9.   

    to mefaintII(我晕)
    我CMR方面没什么经验,能举几个做cmr不方便的例子吗?
      

  10.   

    to BluePenguin(蓝色企鹅) :
    请问你能不能做一个用CMP实现分页的东西.
      

  11.   

    to jinsanqi(鸟人)
    我想纯粹的CMP是不好实现的。
    CMP作为O/R映射,起到了将数据形式重组成面向对象和优化访问的作用,从而更多的还是起到数据层的作用。
    因此,功能性的行为还是更多的在Session Bean中实现比较好,只是在Session Bean中将CMP对象替换原来数据库表的位置,从而带来更多的方便和更高的效率。
      

  12.   

    CMP使得对数据库操作的灵活性受到限制,而且不能操作blob/clob;我觉得对简单的字典维护可以考虑用它,
    复杂的查询还是少用为好,等着CMP升级了再说吧。
      

  13.   

    cmp还有很多地方需要完善
    我觉得bmp+jdo能够做为更好的解决方案
      

  14.   

    lhb525(风中之烛)说的有道理
    CMP需要继续完善
      

  15.   

    CMP在屬於一種不太穩定但是又不可遇少的Bean的形勢。
      

  16.   

    CMP感觉没有BMP好,很多东西,容器给你做好了,反而感觉缺乏操控性.
      

  17.   

    cmp的总体构造很不错,但是性能问题有点不好,主要是在entity bean上,用entity bean的信息加载到数据库时,速度很慢,而用jdbc直接从数据库中获取要比entity bean快的多.
      

  18.   

    lanziqian(红狐)说的问题,我在做测试的时候也发现了,CMP加载的时候明显慢很多。