在Spring3Mybatis集成应用程序中,哪一层最适合处理事务?

在Spring3Mybatis集成应用程序中,哪一层最适合处理事务?,spring,spring-3,spring-transactions,Spring,Spring 3,Spring Transactions,目前我使用MVC架构开发Spring3、Mybatis和Struts2集成应用程序。但是我在应用程序中处理事务时遇到一些困难。我在服务层使用Spring事务,如下所示 服务层 @Service("MyService") @Transactional public class MyServiceImpl implements IMyService { @Transactional(readOnly=false)

目前我使用MVC架构开发Spring3、Mybatis和Struts2集成应用程序。但是我在应用程序中处理事务时遇到一些困难。我在服务层使用Spring事务,如下所示

服务层

         @Service("MyService")
         @Transactional
         public class MyServiceImpl implements IMyService {
              @Transactional(readOnly=false)
              public void myMethod() {

              }
         }
我的问题是“我应该在数据访问层而不是服务层中使用Spring事务吗?”

数据访问层

        @Repository("MyDAO")
        public class MyDAO implements IMyDAO {
             @Transactional(readOnly=false)
             public void myMethod() {

             } 
        }

如果您通过服务层调用每个DAO方法,则会使服务层具有事务性。如果调用一些独立于服务层的DAO方法,则DAO方法需要是事务性的。您还可以将这两个事务都设置为事务性的,因为Spring将在这两个层中传播事务,这意味着如果您调用的服务方法是事务性的,即调用事务性DAO方法,那么它们将共享相同的事务