事务概念、什么是事务?
(1)事务是数据库 *** 作最基本单元,逻辑上一组 *** 作要么都成功,如果有一个 *** 作失败所有 *** 作都失败。
(2)典型场景:银行转账
为什么要引入事务?
发生异常情况下需要引入事务,例如:银行转账,要么转成功提交事务,失败的话都失败,回滚事务。
事务四个特性(ACID特性)
(1)原子性(指的是过程不可分割,要么都成功,要么都失败)
(2)一致性(指的是 *** 作之前、 *** 作之后的总量是不变的)
eg: Lucy 有100块,Mary有100块,两个总和200块。Lucy转100给Mary后,Lucy没有钱了,Mary有200,两人总和还是200。转账前,转账后总量不变。这个指的就是一致性。
(3)隔离性(多事务 *** 作,他们之间不会产生影响)
eg:两个人 *** 作同一条记录,是互不影响的。
(4)持久性(事务最终是要提交的,提交后表中的数据真正发生变化,这就叫持久性)
注:事务的 ACID特性指的就是 事务的原子性、一致性、隔离性、持久性
事务的过程
1)开启事务
2)进行业务 *** 作
3)没有发生异常,提交事务
4)出现异常,事务回滚
Spring事务管理介绍(编程式事务管理 和 声明式事务管理)
1、事务添加到 JavaEE 三层架构里面 Service层(业务逻辑层)
2、在 Spring 中进行事务管理 *** 作有两种方式:编程式事务管理 和 声明式事务管理
(1)编程式事务管理:需要自己手动编写开启事务、提交事务、回滚事务代码
public class UserServer {
/**
* 转账的方法
*/
public void account() {
try {
//第一步:开启事务
//第二步:进行业务 *** 作
//Lucy 少100
userDao.reduceMoney();
//模拟异常
int i = 10 / 0;
//Mary多100
userDao.addMoney();
//第三步:没有发生异常,提交事务
} catch (Exception e) {
//第四步:出现异常,事务回滚
}
}
}
(2)声明式事务管理(使用这个)
声明式事务管理
(1)基于注解方式实现声明式事务管理(推荐使用)
(2)基于xml配置文件方式
注:在 Spring 中进行声明式事务管理,底层使用 AOP 原理.。
Spring 事务管理 API
Spring 事务管理接口(PlatformTransactionManager),代表事务管理器,这个接口针对不同的框架提供不同的实现类。例如:Spring 整合的是 MyBatis框架或者 JDBC ,那么 用 DataSourceTransactionManager 的事务管理器实现类。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)