1:事物的特性:原子性,一致性,隔离性,持续性。
2:事物的隔离级别:读未提交,读已提交,读重复,序列化。
Spring事物的传播特性一共有七种:
传播特性 | 含义 | 用法 |
PROPAGATION_REQUIRED | 表示当前方法必须在一个包含事物的上下文环境中运行,也就是说,进入该方法时,如果已经开启了事物,则在当前事物下运行,否则,开启一个新的事物。 | |
PROPAGATION_SUPPORTS | 表示该方法可以在事物环境下运行,但不是必须的,也就是说,进入该方法时,如果已经开启了事物,则在事物环境下运行,否则不在事物环境下运行。 | |
PROPAGATION_MADATORY | 表示该方法必须在事物环境下运行,如果调用该方法时不包含事物,则抛出IllegalTransactionStateException异常。 | |
PROPAGATION_NESTED | 如果不存在事物,则开启一个新的事物,如果已经存在事物,则在嵌套事物中运行。嵌套事物和新开启一个事物的区别时,外部调用者出现异常能使嵌套事物回滚,但是不能使新开启的事物回滚。 | @Transactional(propagation = Propagation.NESTED) |
PROPAGATION_NEVER | 表示该方法不能在事物环境下运行,如果调用该方法事已经开始了事物,则抛出异常。 | |
PROPAGATION_REQUIRES_NEW | 表示进入该方法时,开启一个新的事物。 | |
PROPAGATION_NOT_SUPPORTED | 表示该方法不应该在事物中运行,如果进入该方法时,已经开启了事物,则将该事物挂起,直到方法执行完毕再将挂起的事物重新开启。 | |