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
网友评论