纵述CMP,BMP

       cmp是容器管理持久性,bmp是bean管理持久性。cmp的持久性(包括生存期,数据库连接等)都是由ejb container(ejb容器)来管理的。bmp则所有的事情都必须由bean来完成,也就是说使用cmp时许多工作都是由服务器(准确的说是ejb容器)来完成的。而bmp则要你来做啦。例如你将一个实体bean连接到一张数据库表上。使用cmp,你只需要建立好cmp与表的映射关系就可以啦。而bmp不仅要建立映射关系,而且数据库连接,断开等等都需要你自己来做。cmp的复杂性要小于bmp,但是灵活性不如bmp,但是我认为一般情况下cmp较bmp用得多,因为简单的多。另外cmp和bmp的外部接口都是一样的,只是内部实现和部署描述不一样,因此如果你把一个cmp改写成一个bmp,或者反之,客户程序是一点也感觉不出来的。EJB2.0由于ejb-ql的加入使得cmp的灵活性大幅度增加,个人感觉对于普通的需求cmp完全可以啦,除非你有特殊要求。比如想在ejb连接数据库的时候,提醒你老婆的生日到啦,该送花啦。 

    如果想在程序中手动控制事务或想与别的系统如corba集成,就用bmp,一般推荐用cmp,因为ejb2.0对cmp有了全新的定义,新一代的ejbql语言已经成为标准,这种基于对象的类似于sql语句的语言,很可能最后在ejb中取代sql,它支持排序,合计等多种计算。cmp对事务自行控制,字段也自行控制,而且加入了关系的概念,可以使cmp之间支持关系操作,什么简单。但缺点是不太通用,配置麻烦,针对不同的容器要不同的配置,移植差,不象bmp那样移植好,配置简单,但效率肯定是cmp远远高于bmp。

为了增加可移植性就用CMP.....另外CMP也省事,省去你需要了解的好多东西... 

    你不想使用预设的Insert,Update,Delete之类的代码,而是要使用自己的控制代码,就可以使用BMP,在ejbCreate,ejbStore等方法里面自己撰写代码.

另外现在EJB2.0中CMP不支持排序若想在SQL语句中排序就要用BMP 

    最好的解决方案是用CMP,然后用BMP继承CMP。用BMP来做CMP不能做的事,比如like查询。两者兼顾。既可以有CMP的可移植性。又可以有BMP的灵活性。不过遵守一个原则,能有CMP的就要用CMP。呵呵!

我一般都用CMP,只有在表结构比较复杂、SQL语句复杂的情况下使用BMP。

当你想灵活的使用ejb时,而对可移制性要求不高时,使用bmp。否则使用cmp。

    CMP周期短,简单,但有依赖性, CMP比较适合单一的表影射操作。比如你可以把一个客户表对应做成一个CMP(其实.NET里的CMP是对存储过程的映射)BMP比较适合一组负责业务的操作。比如你可以把一个财务三级报表做成一个BMP。

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值