事务的概念
事务是数据库操作最基本单元,逻辑上的一组操作,要么都成功,如果有一个失败,则所有操作都回滚
事务四个特性ACID
- 原子性
- 一致性
- 隔离性
- 持久性
事务操作环境模拟
- 配置数据库连接池
1 | <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" |
- 配置JdbcTemplate对象
1 | <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> |
- 创建UserDaoImpl类
1 |
|
- 创建UserService类
1 |
|
- 此过程模拟的是用户之间的转账
事务管理操作介绍
两种方式
- 声明式事务管理
- 基于注解
- 基于配置
- 编程式事务管理
- 声明式事务管理
声明式事务管理的底层是AOP原理
基于注解的声明式事务管理
- 创建事务管理器
1 | <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> |
- 引入命名空间
1 | <beans xmlns="http://www.springframework.org/schema/beans" |
- 开启事务注解
1 | <tx:annotation-driven></tx:annotation-driven> |
- 为UserService类添加事务注解
1 |
|
- 测试
1 |
|
声明式事务管理参数配置
propagation:事务传播行为
- REQUIRED
- REQUIRED_NEW
- SUPPORTS
- MANDATORY
- NOT_SUPPORTS
- NEVER
- NESTED
ioslation:事务隔离级别
- Read_Uncommitted
- Read_Committed
- Repeatable_Read
- Serializable
timeout:超时时间
- -1(默认不超时)
- 其他一秒为单位的数字
readIOnly:是否只读
rollbackFor:回滚
noRollbackFor:不回滚
示例
1 |
基于配置的声明式事务管理
- 创建事务管理器
1 | <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> |
- 配置通知
1 | <tx:advice id="txadvice"> |
- 配置切入点和切面
1 | <aop:config> |
声明式事务管理的完全注解
- 创建配置类
1 |
|
- 测试
1 |
|