@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 }

浙公网安备 33010602011771号