2004-9-2 cmp的浅解

类别:Java 点击:0 评论:0 推荐:
在学习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中配置     <trans-attribute>Required</trans-attribute>     对entity bean提供的方法进行事务管理的,与以前的开发模式不同,con.setAutoCommit(false),con.commit()是有容器自动完成,就是说不管是BMP还是CMP,虽然在程序中完成了对数据库的操作,但事实上可能并没有真正更新到数据库中,什么时候更新有容器和相关配置文件决定。  2)在weblogic中的数据源一定要配置为TxDataSource,否则事务无法保证。     综述,在ejb的开发中,可由session bean完成业务逻辑的处理,entity bean 完成对表的操作,数据持久存储,至于事务,有容器来完成。与常规应用开发的相比,它的好处私以为有以下两点:  1)分布式  2)对象池

本文地址:http://com.8s8s.com/it/it15761.htm