在 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 建议不要只注释整个 类 某些方法,这也是一个很好的做法,这样您就可以轻松维护您的应用程序。
在 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 建议不要只注释整个 类 某些方法,这也是一个很好的做法,这样您就可以轻松维护您的应用程序。