回顾事务
- 将一组业务当成一个业务来做:要么都成功,要么都失败
- 在项目开发中十分重要(涉及数据一致性!!!)
- 保证完整性和一致性
【面试问题点】
- 事务ACID原则
- 原子性
- 一致性
- 隔离性:多个业务可能操作同一个资源,防止数据损坏
- 持久性:事务一旦提交,无论系统发生什么问题都不会影响数据,数据被持久化写入存储器中
Spring中的事务管理
声明式事务(AOP)
<!--结合AOP实现事务织入-->
<!--配置事务通知-->
<tx:advice id="txADVICE" transaction-manager="transactionManager">
<!--给指定方法配置事务-->
<!--配置事务传播特性:
【知识点】
【默认】propagation="REQUIRED"
-->
<tx:attributes>
<tx:method name="add" propagation="REQUIRED"/>
<tx:method name="del" propagation="REQUIRED"/>
<tx:method name="update" propagation="REQUIRED"/>
<tx:method name="select" read-only="true"/>
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="txPointCut" expression="execution(* cn.iris.mapper.*.*(..))"/>
<aop:advisor advice-ref="txADVICE" pointcut-ref="txPointCut"/>
</aop:config>
@Test
public void trasactionTest() {
addUser();
selectUser();
delUser();
selectUser();
}
【面试点】-- 传播方式&隔离级别
为什么需要事务
- 如果不配置事务,可能存在数据提交不一致的情况;
- 如果不在Spring中配置声明式事务则需要在代码中手动配置事务
- 项目开发中,事务涉及到数据的一致性和完整性,不容马虎