事务
· 阅读需 7 分钟
参考链接:
一口气说出 6种 @Transactional 注解失效场景
一、事务
事务的特性:
- A(atomicity):原子性,一个事务是一个不可分割的工作单位,要么都提交,要不都不提交。
- C(consistency):一致性,事务前后,数据状态一致。
- I(isolation):隔离性,事务互不干扰。
- D(durability):持久性,一旦提交,数据永久性更改。
编程式事务
在代码中手动提交事务、回滚等操作,代码侵入性比较强
Connection conn;
try {
conn.setAutoCommit(false);// 开启事务管理
// TODO something...
conn.commit();// 提交事务
} catch (Exception e) {
conn.rollback();// 回滚事务
throw new InvoiceApplyException("异常失败");
}
声明式事务
基于AOP面向切面,使用
@Transactional注解,将业务与事务处理解耦,代码侵入性很低,所以是最常用的事务管理方式。
@Transactional
@GetMapping("/test")
public String test() {
int insert = cityInfoDictMapper.insert(cityInfoDict);
}