声明式事务
- 一组业务 --> 一个业务 要么都成功,要么都失败
- 涉及到数据一致性问题
- 确保完整性和一致性
事务ACID原则
- 原子性:要么都成功,要么都失败
- 一致性:事务前后数据完整性一致
- 隔离性:多个用户可能操作同一个资源,防止数据损坏
- 持久性:一旦提交则不可逆,持久化到数据库中
Spring中的事务管理
-
声明式事务:AOP
<!--配置声明式事务--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!--结合aop实现事务的织入--> <!--配置事务的通知--> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <!--给方法配置事务--> <!--配置事务的传播特性--> <tx:attributes> <!-- <tx:method name="add" propagation="REQUIRED"/>--> <!-- <tx:method name="delete" propagation="REQUIRED"/>--> <!-- <tx:method name="update" propagation="REQUIRED"/>--> <!-- <tx:method name="query" read-only="true"/>--> <tx:method name="*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <!--配置事务切入--> <aop:config> <aop:pointcut id="txPointCut" expression="execution(* com.yl.mapper.*.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/> </aop:config>
-
编程式事务:在代码中进行事务管理
事务的作用
- 若不配置事务,可能存在数据提交不一致的情况
- 不在Spring中配置声明式事务,需在代码中手动配置事务
- 事务在项目中的重要性,涉及到数据的一致性和完整性