码迷,mamicode.com
首页 > 其他好文 > 详细

@Transactional 注意事项、方法调用

时间:2020-03-09 01:29:26      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:不同类   class   def   color   一个   sans   develop   注意   time   

1.同一个类中,即A与B在同一类中,A()调用B()方法,A不加 @Transactional 事务注解,B加 @Transactional 事务注解,则B中的事务不起作用,A加事务,才会起作用,B中若将异常捕获,事务也不起作用

 

@Transactional //A加事务才会起作用
public void A(){
   B();
}
--------------------------------

@Transactional //B加不加事务无影响
public void B(){
  try{
   throw new Exception();
}catch(Exception e){//B中将异常铺货未能抛出到A中,事务也不起作用
}
}

 

 

 

2.不同类中,即A在A类中,B在B类中,A调用B,A与B事务独立,此时A不加事务B加事务,B中事务可生效,则可将需要加事务的代码块抽取出放入其他类的方法中加事务来实现部分代码事务回滚

public void A(){
  abcabc;
  try{
     B();
    }catch(Exception e){
    }
  defdef;//B中发生异常事务回滚,不影响方法A
}

--------------------------------

@Transactional 
public void B(){
  throw new Exception();
}

 

3.@Transactional(rollbackFor=Exception.class) 可回滚非RuntimeException的事务

4.@Transactional 注解只能应用到 public 可见度的方法上

 

讲的比较透彻全面的一篇文章:https://www.ibm.com/developerworks/cn/java/j-master-spring-transactional-use/index.html

@Transactional 注意事项、方法调用

标签:不同类   class   def   color   一个   sans   develop   注意   time   

原文地址:https://www.cnblogs.com/qianabby/p/12446002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!