关闭

EJB CMP/BMP

649人阅读 评论(0) 收藏 举报

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。 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7959次
    • 积分:140
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:5篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档