事务是基于组件级别的,而不是基于组件的方法级别的;
通常的情况是只是组件的部分方法需要事务处理,其他的都不需要;
这时候,基于组件级的事务导致每个方法都产生一个事务,加大了系统的开销。
  大家如何看待?j2ee中如何处理相同的问题??

解决方案 »

  1.   

    那么我先总结一下:我看了j2ee的做法:
    Methods within the same EJB component may have different transactional attributes for optimization reasons, since all methods may not need to be transactional
      

  2.   

    COM+中,事务并非是基于组件级别的,可以在方法的粒度上指定对事务的要求。
      

  3.   

    我再仔细说一些:COM+中,事务可以在组件的级别是设置是Require/RequireNew/Support/Not Support,在方法的级别上可以设置是否是AutoComplete,这样,只要你的方法不是AutoComplete,就可以实现一些复杂的Transaction。EJB中的Require/RequireNew/Support/Not Support是可以在方法的级别上设置的。这点在COM+中确实不支持,无法实现在一个组件中,有的方法在Transaction中运行,有的不在Transaction中运行。不过EJB这样的设计让应用服务器的设计变得复杂化,是否真的有性能上的好处还需要进一步讨论。客观地说,COM+这样的设计还是能满足应用要求的。如"topikachu(皮皮)"所说,如果真的遇到一个组件中有的方法需要事务,有一些不需要事务这样的问题,可以通过把组件进行重新分割来解决。
      

  4.   

    读了你们回答,受益非浅.但是, 有问题请教:to topikachu(皮皮) 
     
      1)事务必需是组件级别的,再细小就没法"保证事务的完整性"了--???   为何保证事务的完整性了???  2)如果你在设计中遇到这样的疑惑,那么最好的办法就是将这个组件拆开来   拆分出来?? 如何保证一个对象的完整性.   一般的情况, 一个业务对象的部分方法需要事务处理作保证;另外的不需要.
      
        拆分出来???---就是分割对象!!!to: kicku(Lavender's Lover) ----- 这样,只要你的方法不是AutoComplete,就可以实现一些"复杂"的Transaction。   希望再详细些????
       
     
     
      

  5.   

    to once168  使用的是com+的服务,