在 spring MVC 应用程序的控制器层中使用 @Transactional 有什么好处

What is the benefit of using @Transactional in Controller layer on spring MVC application

在 Spring 4 MVC 应用程序中,我注意到控制器层使用了 @Transactional 注释。但是在很多地方建议在服务层内使用(服务实现class)。

@Controller class 中使用 @Transactional 有什么好处?

此外,我有一个服务层实现 class,它会将数据更新到数据库,我注意到 Transaction 属性的用法如下

@Transactional(propagation = Propagation.REQUIRED, readOnly = true)

readOnly = true,当该方法使用查找或从数据库中获取一些数据时使用。 但是使用 readOnly = true,服务层无论如何都能够保存数据。 我的应用程序使用 Spring 4 + Hibernate 4.2.20.

应用程序使用的事务管理器

<bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager" >
        <property name="sessionFactory" ref="sessionFactory" /> 
    </bean>

在事务中使用“readOnly = true”是否可以将数据保存到数据库?

没有理由在@Controller 中使用注解@Transactional。

不这样做的原因很简单:最佳实践。 @Controller 不应该知道 MVC 逻辑中的数据持久性,只有服务层。

另外 Spring 建议不要只注释整个 类 某些方法,这也是一个很好的做法,这样您就可以轻松维护您的应用程序。