EJB CMP/BMP

EJB有两种主要类型BMP(Bean    managed    persistence    )和CMP(Container    managed    persistence    ),这两种类型各有优缺点。   
    
   BMP是在Bean中完成对数据库JDBC的各种调用,也就是说,在你的实体bean(entity    bean)中,明确写入了SQL语句,如"insert    ..    "或"select    ..",并且使用Datasource获得一个数据库资源以及连接(connection)从而对数据库直接进行增加    删除修改。   
    
   CMP是由EJB容器自动完成对数据库的操作,你所有做的,就是在实体bean重写入SetXXX或getXXX方法,然后在ejb-jar.xml中定义cmp-field就可以。   
    
   很明显,CMP编写要简单多,而且数据库操作由EJB容器完成应该是一种趋势,但是CMP有个缺点就是不够灵活,如果我们要完成类似SQL搜索语句的like命令,如"select    *    from    A    where    name    like    '%banqiao'",CMP就无法自动帮助我们完成,这样我们就需要BMP自己来写。   
    
   在实际应用,一般为了效率考虑,我们尽量使用CMP,但如何为将来有可能使用BMP作好准备,就是说有可以延伸到BMP的基础。EJB    2.0对CMP的抽象类支持为我们提供了这种实现的基础。   
    
   总体思路是,先使用抽象类完成CMP    如果需要BMP    可以extend这个抽象类,然后覆盖原来的方法(用自己的特殊SQL语句操作来覆盖该方法)。   

 

EJB/CMP的优点:   ● 采用工厂类(指Home)查找实例比向Session/Connection对象传递参数获取实例要好。   ● ejbSelect跟上面说的类似。   ● 查询名称使用abstract schma是一个很好的解决方案。   ● 理论上来说,这种模式在某些方案中可以有更好的复用性。   EJB/CMP的优点:   ● CMP不属于EJB规范。它并不是个合适的模型去实现这个目的。已经没有合适的(例如非官方)借口去让EJB3.0中保留CMP。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值