Spring 声明式事务的传播特性Propagation详解

@Component("userService")
//@Transactional 也可以只写在某些需要事务的方法上
public class UserService {
   
   
   //@Transactional(propagation=Propagation.REQUIRED)这是@Transactional的默认值,
   //就是说@Transactional(propagation=Propagation.REQUIRED)=@Transactional
   //Transactional默认的是REQUIRED,意思就是: 别的方法调用我,别的方法有事务了,我这个       //方法就不创建事务了,用前面的方法的事务,如果前面的方法没有事务,我这里就创建事务。
   
   
   //自己查看Transactional的propagation属性,事务的传播方式的意思
   @Transactional(readOnly=true)//加事务; spring里如果是运行期异常会自动回滚
   public void add(User user) {

      //事务的传播特性:
      //Transactional的设置有下面这些: 记住这个就行了Propagation.REQUIRED
      //Propagation.REQUIRED:别的方法调用我,别的方法有事务了,我这个方法就不创建事务            //了,用前面的方法的事务,如果前面的方法没有事务,我这里就创建事务
      
      //Propagation.MANDATORY:谁调用我这方法,谁就必须要开启事务,不然报错
      //Propagation.NESTED:如果原来有事务,那在调用我的时候原来的事务暂停设置一个保存            //点,我这里要开启新的事务,我这里的事务结束了才执行调用者的事务,
      // 我这新的事务如果要回滚的时候就回滚到保存点;

      //Propagation.NEVER;不能有事务
      //Propagation.NOT_SUPPORTED:我这方法执行不能有事务,如果原来有事务就暂停,我这          //里执行完 了,原来的事务继续执行
      //Propagation.REQUIRED_NEW:如果当前有事务,就挂起,创建新的事务,你没事务我这          //里也要创建新的事务
      //Propagation.SUPPORTS:你有事务我就有事务,没有我这也就没有
      
      //事务的隔离级别:
      //readOnly=true/false 只读/不只读的意思,不能插入数据 ;readOnly=true的时候 得到的 
      //数据库连接connection的执行效率高
      //timeout: 设置事务超时时间,事务时间太长了就终止掉
      //roollbackFor:在什么情况下回滚(可以自己指定什么情况下回滚),不写的话就是默认的运行异        //常就回滚,运行期间的异常都会回滚,所以我们都没写try catcht 来回滚事务
      //noroollbackFor: 指定什么情况下事务不回滚
          
      
   }
    
}

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值