沉浸在宁静之中

【baichuan_文集】

每日一记【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)对象池
阅读更多
个人分类: 每日记
想对作者说点什么? 我来说一句

股票操作每日一记 C#源程序

2009年02月26日 834KB 下载

全息成像原理浅解.

2011年10月08日 156KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭