基于Spring和EJB的灵活的事务控制

    话说在JCF框架里面可以以依赖注入的形式来选择是用EJB或者是POJO来提供后台服务,对于选用了EJB的CMT事务,再使用Spring的事务就没有必要了,如果不要EJB那就要采用Spring的事务了。在JCF中,采用EJB形式调用链是这样的client->delegate->EJBDelegate->SessionFacade->processor->command->dao,事务采用session bean的CMT,采用required策略,在session bean之后的所有的command的数据库操作都处于同一个事务中,如果发生了特定的异常(异常处理类又可以通过spring剥夺开来,针对dao或者command等组件来做不同的异常处理)则调用setrollbackonly函数进行回滚。
     如果采用spring的事务,事务的粒度得要好好考虑一下。为了统一两者的关系,使得在使用ejb和spring的事务不用更改代码。经过多翻的验证,事务控制最好放在processor中,在command中发生的异在processor中抓住,并设置相应的errorCode,返回给delegate。这样异常就到不了delegate,根据不同的异常给客户端传进来的state设置不同的errorCode,这样后端的错误就不会导致客户端的停止运行,再根据state的errorCode来做不同的反应。具体的代码随后给出来:

你可能感兴趣的:(DAO,spring,框架,bean,ejb)