spring事务学习

PlatformTransactionManager,
通过这个接口,Spring为各个平台如JDBC、Hibernate等都提供了对应的事务管理器

spring的事务是逻辑事务

和物理事务最大的区别在于,事务的传播行为,可以在多个事务方法间传播。

隔离级别

ISOLATION_DEFAULT 使用数据库默认的事务隔离级别,另外四个与 JDBC 的隔离级别相对应
ISOLATION_READ_UNCOMMITTED
ISOLATION_READ_COMMITTED
ISOLATION_REPEATABLE_READ
ISOLATION_SERIALIZABLE


clipboard.png

回滚规则

Spring只有在抛出的异常为运行时unchecked异常时才回滚该事务,也就是抛出的异常为RuntimeException的子类(Errors也会导致事务回滚)

脏读(dirty read)

事务没提交,提前读取
如果第二个事务查询到第一个事务还未提交的更新数据,形成脏读


4e454df90939.png

不可重复读(unrepeated read)

一个事务两次读取同一行数据,结果得到不同状态结果,如中间正好另一个事务更新了该数据,两次结果相异,不可信任


7794831973dd.png

幻读(phantom read)

一个事务执行两次查询,第二次结果集包含第一次中没有或者某些行已被删除,造成两次结果不一致,只是另一个事务在这两次查询中间插入或者删除了数据造成的


191271a067f4.png

你可能感兴趣的:(spring事务学习)