Spring5中的事务管理
一、介绍
-
事务特性(ACID)
原子性(A):一个事务中的多个DML操作要么同时成功,要么同时失败
一致性(C):事务执行前后数据库中的数据是一致的,不能有冲突
隔离性(I):多个事务可以同时进行(两个人可以同时借一本书)
持久性(D):事务完成后对数据的操作是永久的
-
环境搭建(和JDBCTemplate操作一致)
二、Spring中的事物操作
-
一般将事务添加到Service层中
-
两种事务管理方式
- 编程式事务管理和声明式事务管理(一般使用)
-
声明式事务管理底层使用AOP
-
Spring中事务管理的API
-
提供了一个接口,针对不同框架,有不同的实现类(JDBCTemplate/Mybatis使用的是下图实现类)
-
-
使用案例
-
在Spring配置文件中配置事务管理实现类(见上图)
<!--创建事务管理对象--> <bean id="TransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!--注入DataSource--> <property name="dataSource" ref="dataSource"></property> </bean>
-
在Spring配置文件中添加名称空间:tx,并开启事务注解
<!--开启事务注解--> <tx:annotation-driven transaction-manager="TransactionManager"></tx:annotation-driven>
-
在Service的类或方法上面添加事务注解
-