spring - transaction - 事务抽象
2021-06-07 15:04
标签:方法 comm 提交 ext into poi except cte 查看 Spring提供了统一的 1??配置TransactionManager(事务管理器) 2??开启 3?? 使用 1?? 配置TransactionManager 2?? 使用 3??把? 有两种方式 1??配置 使用 spring - transaction - 事务抽象 标签:方法 comm 提交 ext into poi except cte 查看 原文地址:https://www.cnblogs.com/yuki2333/p/14584242.html??Spring事务抽象 - 简介
??Spring事务抽象 - 模型
事务抽象
,可以让我们以统一的Api进行事务管理
。具体的操作
交给不同的TransitionManager实现
完成。?? Spring事务抽象 - 接口介绍
PlatformTransactionManager
- 根据TransitionDefinition
创建事务、事务回滚、事务提交
getTransaction()
- 开启事务TransitionDefinition
- 定义事务特征,比如传播机制
、隔离界别
、readonly
、timeout
、遇到什么异常回滚
TransactionStatus
- 保存事务状态Propagation
- 传播行为,一般查询方法
使用SUPPORTS
,更新、插入、删除方法
使用REQUIRED
Isolation
- 隔离级别TransitionTemplate
- 用于编程式事务(用法类似JdbcTemplate)TransitionCallback/TransactionCallbackWithoutResult
- 给TransationTemplate提供回调?? 声明式事务 - 注解方式
@Transaction
注解支持
@Tranaction
注解?/*
* 使用事务 - @Transitional
* */
@Transactional
public void insert() {
// 1. 插入数据
int update = jdbcTemplate.update("insert into tb_area value (null,‘东校区‘)");
// 2. 抛出异常
throw new RuntimeException("出现了错误");
// 3. 查看是否回滚
}
?? 声明式事务 - XML方式
定义事务切面
织入到target
?? 编程式事务
TransactionManager
- 自己控制事务,自己决定什么时候rollback
和commit
TransactionTemplate
- 只用提供回调
,方法抛RuntimeException
回滚?? 使用TranactionManager
/*
* 使用事务 -
* DefaultTransactionDefinition - 定义事务特征,比如propagation、isolation
* TransactionManager - 事务管理
* */
public void useTxManager() {
// 1. 初始化TransitionDefinition -
DefaultTransactionDefinition transitionDefinition = new DefaultTransactionDefinition();
transitionDefinition.setPropagationBehavior(Propagation.REQUIRED.value());
// 2. 开启事务
TransactionStatus transactionStatus = transactionManager.getTransaction(transitionDefinition);
try {
// 1. 插入数据
int update = jdbcTemplate.update("insert into tb_area value (null,‘东校区‘)");
// 2. 抛出异常
if(update == 1) {
throw new RuntimeException("出现了错误");
}
transactionManager.commit(transactionStatus);
}catch (Exception e) {
e.printStackTrace();
transactionManager.rollback(transactionStatus);
}
}
?? 使用TransactionTemplate
TransactionTemplate
TranactionTemplate
,并使用TransactionCallback
提供回调/*
* 使用事务 -
* TransitionTemplate - 类似JdbcTemplate,内部视同TransactionManager进行事务操作
* TransitionCallabck、TransactionCallbackWithoutResult - 提供回调
* */
public void useTxTemplate() {
transactionTemplate.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus transactionStatus) {
int update = jdbcTemplate.update("insert into tb_area value (null,‘东校区‘)");
// 2. 抛出异常
if(update == 1) {
throw new RuntimeException("出现了错误");
}
// 3. 返回值
return update;
}
});
}
文章标题:spring - transaction - 事务抽象
文章链接:http://soscw.com/index.php/essay/91794.html