第三章、Spring的事务处理
1.什么是事务?
保证业务操作完整性的一种数据库机制
事务的特点:A C I D
A:原子性
C:一致性
I:隔离性
D:持久性
2.如何控制事务
JDBC:
Connection.setAutoCommit(false)
Connection.commit();
Connection.rollback();
Mybatis:
自动开启事务
SqlSession.commit(); 底层还是调用了Connection
SqlSession.rollback(); 底层还是调用了Connection
结论:控制事务底层,都是Connection对象完成的
3.Spring控制事务开发
Spring是通过AOP的方式进行事务开发
1.原始对象
public class xxxUserServiceImpl{
private xxxDAO xxxDAO;
set get
}
1.原始对象---->原始方法----->核心功能(业务处理+DAO调用)
2.DAO作为Service的成员变量,通过依赖注入进行赋值
2.额外功能
1.org.springframwork.jdbc.datasource.DataSourceTransactionManger
2.注入DataSource
3.切入点
@Transcational
事务的额外功能增加给那些业务方法
1.类上:类中的所有方法都会加入事务
2.方法上:这个方法会加入事务
4.组装切面
1.切入点
2.额外功能
<tx:annotation-driven transaction-Manager=""/>
4.Spring控制事务的编码
1.搭建开发环境(jar)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
2.编码
<!-- 原始对象-->
<bean id="userService" class="com.liulei.service.UserServiceImpl">
<property name="userDAO" ref="userDAO"/>
</bean><!-- 额外功能-->
<!-- DataSourceTransactionManger-->
<bean id="dataSourceTransactionManger" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 切入点-->
@Transactional