@Transactional作用及应用场景——开源项目代码学习

作用:事务控制。

 

应用场景:直接作用于方法,控制回滚操作。

 

  (1)@Transactional(rollbackFor = {xxx.class}):检查到异常执行回滚

  (2)@Transactional(noRollbackFor = {xxx.class}):检查到异常不执行回滚。

 

示例:

 1 @Transactional(rollbackFor = {IllegalArgumentException.class})
 2     @Override
 3     public Person savePersonWithRollBack(Person person) {
 4         Person p = repository.save(person);
 5         if("怪兽不纯粹".equals(person.getName())){
 6             throw  new IllegalArgumentException("该名字已经存在,数据将回滚");
 7         }
 8         return p;
 9     }
10 
11     /**
12      * 插入一条记录,如果名字已经存在不回滚操作。
13      * @param person
14      * @return
15      */
16     @Transactional(noRollbackFor = {IllegalArgumentException.class})
17     @Override
18     public Person savePersonWithoutRollBack(Person person) {
19         Person p = repository.save(person);
20         if("怪兽不纯粹".equals(person.getName())){
21             throw new IllegalArgumentException("该名字已经存在,数据不回滚");
22         }
23         return p;
24     }

 

posted @ 2020-06-04 16:13  怪兽不纯粹  阅读(958)  评论(1)    收藏  举报