- 1.1 事务
- 事务是数据库操作最基本的单元,逻辑上的一组操作要么都成功,如果有一个失败所有操作都失败。
- 典型场景-银行转账
- Lucy转账100给Mary
- Lucy少100,Mary多100
- 1.2 事务的四个特性
- 原子性:要么都成功,如果有一个失败所有操作都失败
- 一致性:Lucy和Mary各有100,两人共有200,Lucy把100给Mary,Lucy是0,Mary是200,和仍是200
- 隔离性:多事务操作之间相互不影响
- 持久性:提交事务后,不再变化
- 2.1 事务添加到JavaEE三层架构里面的Service层
- 2.2 在Spring进行事务管理操作
- 有两种方式:
编程式事务管理和声明式事务管理(常用)- 声明式事务管理
- 注解方式
xml配置文件方式
- 声明式事务管理
- 有两种方式:
- 2.3 在Spring种进行声明式事务管理,底层使用AOP原理
- 2.4 Spring事务管理API
- 提供一个接口,代表事务管理器,这个接口针对不同的框架提供不同的实现类
三、事务操作(注解声明式事务管理)
- 3.1 使用@Bean创建置事务管理器对象
@Bean public DataSourceTransactionManager dataSourceTransactionManager(){ DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(); DataSource dataSource = dataSource(); dataSourceTransactionManager.setDataSource(dataSource); return dataSourceTransactionManager; }
- 3.2 在配置类SpringConfig上添加注解@EnableTransactionManagement
- @EnableTransactionManagement 设置当前Spring环境中开启注解式事务支持
- 3.3 在 service 类上面(或者 service 类里面方法上面)添加事务注解
- @Transactional,这个注解添加到类上面,也可以添加方法上面
- 如果把这个注解添加类上面,这个类里面所有的方法都添加事务
- 如果把这个注解添加方法上面,为这个方法添加事务
- 4.1 在 service 类上面添加注解@Transactional,在这个注解里面可以配置事务相关参数
@AliasFor("value") String transactionManager() default ""; String[] label() default {}; Propagation propagation() default Propagation.REQUIRED; Isolation isolation() default Isolation.DEFAULT; int timeout() default -1; String timeoutString() default ""; boolean readOnly() default false; Class extends Throwable>[] rollbackFor() default {}; String[] rollbackForClassName() default {}; Class extends Throwable>[] noRollbackFor() default {}; String[] noRollbackForClassName() default {};- REMARK
- propagation:事务的传播行为
- isolation:隔离级别
- timeout:超时时间
- readOnly:只读
- rollbackFor
- noRollbackFor
- REMARK
- 4.2 propagation:事务的传播行为
- 当一个事务方法被另一个事务方法调用的时候,这个方法如何运行
- 当一个事务方法被另一个事务方法调用的时候,这个方法如何运行



