每日一记【2004-9-2 cmp的浅解】

在学习entity ejb过程中,无法理解CMP是如何管理事务的,因为在entity bean的ejbCreate方法中仅仅是传入值,由容器完成对表的插入;如果出现异常,它是如何回滚呢?
?在以前的编程模式中,由业务类获取链接,设置自动提交事务为假,然后调用dao类完成对数据的插入,更新等等操作,最后由业务类提交事务,出现异常则回滚事务;这样可以完成事务的处理。CMP并没有找到类似的
con.commit(); con.rollback() 等对事务操作的方法。
?
在网上查找很久,仍然无法理解,初步认为是entity bean 也有业务逻辑处理,即在一个entity bean 中的每个方法都是完成一个业务逻辑,其中自然涉及到对大量不同表之间的操作(插入,更新,删除,查询等等),在entity bean的每个方法中完成对事务的处理,这样,客户端就可以直接调用某个entity bean的某个方法完成一个业务逻辑处理。
?
后来从weblogic例子中隐隐发现并不是如此,所有的entity bean 就是单纯的对某个表的操作,很少有涉及到其它表的;后来在http://dev2dev.bea.com.cn?网站论坛的帖子中总算大体明白了CMP是如何管理事务的(呵呵,感谢啊)。
?
?1)CMP是靠ejb-jar.xml中配置
??? Required
??? 对entity bean提供的方法进行事务管理的,与以前的开发模式不同,con.setAutoCommit(false),con.commit()是有容器自动完成,就是说不管是BMP还是CMP,虽然在程序中完成了对数据库的操作,但事实上可能并没有真正更新到数据库中,什么时候更新有容器和相关配置文件决定。
?2)在weblogic中的数据源一定要配置为TxDataSource,否则事务无法保证。
?
? 综述,在ejb的开发中,可由session bean完成业务逻辑的处理,entity bean 完成对表的操作,数据持久存储,至于事务,有容器来完成。与常规应用开发的相比,它的好处私以为有以下两点:
?1)分布式
?2)对象池
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值