事务理论
Spring事务
Spring的事务机制,是采用统一的机制处理来自不同数据访问技术的事务处理,提供了一个接口 PlatformTransactionManager,
已经为不同数据访问技术可以进行不同的实现,如下。
数据访问技术及实现
JDBC:DataSourceTransactionManager
JPA:JpaTransactionManager
Hibernate:HibernateTransactionManager
JDO:JdoTransactionManager
分布式事务:JtaTransactionManager
缩写解释:
JPA (Java Persistence API)Java持久化API
JTA(java Transaction API)Java 事务API
声明式事务
声明式事务管理建立在AOP之上,其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,执行完目标方法之后根据执行的情况提交或者回滚。
基于@Transactional注解的方式
注:
(1)@Transactional是来自org.springframework.transaction.annotation包的。
(2)@Transactional不仅可以注解在方法上,也可以注解在类上。当注解在类上时,意味着此类的所有public方法都是开启事务的。
如果类级别和方法级别同时使用了@Transactional注解,则使用在类级别的注解会重载方法级别的注解。
编程式事务
编程式事务管理是侵入性事务管理,使用TransactionTemplate或者直接使用PlatformTransactionManager,对于编程式事务管理,Spring推荐使用TransactionTemplate。
事务的传播机制
事务的隔离级别
参考资料:
【SpringBoot系列】八、SpringBoot 中的事务处理
spring事物(一),@EnableTransactionManagement @Transactional 启动解析