在此传上一个 Spring事务练习的小例子 编程式和声明式点击打开链接
事务的概念:
指一组逻辑操作,要么都成功,要么都失败
@事物的特性:
1.原子性Atomic:事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
2.一致性Consistent:事务处理前后数据的完整性必须保持一致。
3.隔离性Isolated:多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。
4.持久性Durable:一个事务一旦被提交,它对数据库中数据的改变就是永久性的,即使数据库发生故障也不应该对其有任何影响。
PlatformTransactionManager平台事务管理器 Spring为不同的持久化框架提供了不同Platform TransactionManager接口实现
TransactionDefine事务定义接口 定义隔离级别、传播行为等
TransactionStatus事务状态接口 是否提交等等
事物的七种传播行为:
第一类共同点:如果 A 方法中有事务,则调用 B 方法时就用该事务,即:A和B方法在同一个事务中。
PROPAGATION_REQUIRED:如果 A 方法中没有事务,则调用 B 方法时就创建一个新的事务,即:A和B方法在同一个事务中。
PROPAGATION_SUPPORTS:如果 A 方法中没有事务,则调用 B 方法时就不使用该事务。
PROPAGATION_MANDATORY:如果 A 方法中没有事务,则调用 B 方法时就抛出异常。
第二类共同点:A方法和B方法没有在同一个事务里面。
PROPAGATION_REQUIRES_NEW:如果 A 方法中有事务,则挂起并新建一个事务给 B 方法。
PROPAGATION_NOT_SUPPORTED:如果 A 方法中有事务,则挂起。
PROPAGATION_NEVER:如果 A 方法中有事务,则报异常。
第三类:如果 A 方法有的事务执行完,设置一个保存点,如果 B 方法中事务执行失败,可以滚回保存点或初始状态。
@重点的三种:PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW, PROPAGATION_NESTED。