在Spring MVC应用程序中使用Controller层中的@Transactional有什么好处

时间:2016-08-30 22:35:04

标签: java hibernate spring-mvc transactions spring-transactions

在Spring 4 MVC应用程序中,我注意到在Controller层中使用了@Transactional注释。但在许多地方,建议在服务层(服务实现类)中使用。

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

另外,我有一个服务层实现类,它将数据更新到数据库,我注意到如下所示使用Transaction属性

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

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

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

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

使用&#34; readOnly = true&#34;在事务内部是否可以将数据保存到数据库?

1 个答案:

答案 0 :(得分:0)

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

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

Spring也建议不要只为某些方法注释整个类,这也是一个很好的做法,因此你可以轻松地保存你的应用程序。