-
@Transactional使用时会有失效的情况:
-
首先要看数据库本身对应的库、表所设置的引擎是什么。MyIsam不支持事务,如果需要,则必须改为InnoDB
-
@Transactional所注解的方法必须时public
-
一个类中的A方法去调用B方法,@Transactional注解在B方法上是不起作用的
-
@Transactional所注解的方法所在的类,是否已经被注解@Service或@Component等
-
异常被你的 catch“吃了”导致@Transactional失效,注解的方法不能使用try,catch
-
你的异常类型不是unchecked异常
-
-
@Transactional使用的技巧
一般情况下,单独在service层或者dao层用@Transactional注解一个方法,避免上述失效的情况,在上一层(controller或者service层)调用时进行try,catch,可以有效的使用@Transactional进行事务管理