1. 程式人生 > >spring boot 事物管理

spring boot 事物管理

1.在啟動類加上@EnableTransactionManagement註解
2.在service實現類的方法上加上@Transactional註解,也可加到方法上

示例:

@Service
public class DemoServiceImpl implements DemoService {
@Autowired
PersonRepository personRepository;

@Transactional(rollbackFor = {IllegalArgumentException.class})
@Override
public Person savePersonWithRollBack(Person person) {
    Person p = personRepository.save(person);
    if (person.getName().equals("sang")) {
        throw new IllegalArgumentException("sang 已存在,資料將回滾");
    }
    return p;
}

@Transactional(noRollbackFor = {IllegalArgumentException.class})
@Override
public Person savePersonWithoutRollBack(Person person) {
    Person p = personRepository.save(person);
    if (person.getName().equals("sang")) {
        throw new IllegalArgumentException("sang已存在,但資料不會回滾");
    }
    return p;
}

}
屬性:
屬性 型別 描述
value String 可選的限定描述符,指定使用的事務管理器
propagation enum: Propagation 可選的事務傳播行為設定
isolation enum: Isolation 可選的事務隔離級別設定
readOnly boolean 讀寫或只讀事務,預設讀寫
timeout int (in seconds granularity) 事務超時時間設定
rollbackFor Class物件陣列,必須繼承自Throwable 導致事務回滾的異常類陣列
rollbackForClassName 類名陣列,必須繼承自Throwable 導致事務回滾的異常類名字陣列
noRollbackFor Class物件陣列,必須繼承自Throwable 不會導致事務回滾的異常類陣列
noRollbackForClassName 類名陣列,必須繼承自Throwable 不會導致事務回滾的異常類名字陣列

宣告式事物管理:http://www.cnblogs.com/guozp/articles/7446477.html