一、事务的四大特性(ACID)
- 原子性(Atomicity):原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。
- 一致性(Consistency):一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。
- 隔离性(Isolation):指多线程环境下,一个线程中的事务不能被其他线程中的事务打扰。
- 持久性(Durability):持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的
二、声明式事务
xmlns:tx="http://www.springframework.org/schema/tx" http://www.springframework.org/schema/tx https://www.springframework.org/schema/tx/spring-tx.xsd
<!--结合AOP实现事务的织入-->
<!--配置事务的类——spring提供-->
<!--配置事务通知-->
<tx:advice id="txadvice" transaction-manager="transactionManager">
<!--给那些方法配置事务-->
<!--配置事务的传播特性-->
<tx:attributes>
<tx:method name="add"/>
<tx:method name="delete"/>
<tx:method name="update"/>
<tx:method name="query"/>
</tx:attributes>
</tx:advice>
<!--结合AOP实现事务的织入-->
<!--配置事务的类——spring提供-->
<!--配置事务通知-->
<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="txPoint" expression="execution(* com.jia.mapper.*.*(..))"/>
<aop:advisor advice-ref="txadvice" pointcut-ref="txPoint"/>
</aop:config>