(四)Spring事务管理接口的介绍
2019-06-22 本文已影响0人
莫夏_b560
Spring 事务管理接口
说明
所谓事务管理,其实就是“按照给定的事务规则来执行提交或者回滚操作”。
Spring 框架支持事务管理的核心是事务管理器抽象,对于不同的数据访问框架通过实现策略接
口 PlatformTransactionManager,从而能支持各种数据访问框架的事务管理
在 SpringBoot 中,当我们使用了 spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa
依赖的时候,框架会自动默认注入 DataSourceTransactionManager 或
JpaTransactionManager(事务管理器)。 所以我们不需要任何额外配置就可以用
@Transactional 注解进行事务的使用。
API
Spring 的事务管理有三个核心接口,分别是:
PlatformTransactionManager
public interface PlatformTransactionManager {
// 获得事务
// 返回一个已经激活的事务或创建一个新的事务(根据给定的 TransactionDefinition 类
TransactionStatus getTransaction(@Nullable TransactionDefinition defini
// 提交事务
// 用于提交 TransactionStatus 参数代表的事务
void commit(TransactionStatus status) throws TransactionException;
// 回滚事务
// 用于回滚 TransactionStatus 参数代表的事务
void rollback(TransactionStatus status) throws TransactionException;
}
TransactionDefinition
public interface TransactionDefinition {
// 返回定义的事务传播行为
int getPropagationBehavior();
// 返回定义的事务隔离级别
int getIsolationLevel();
// 返回定义的事务超时时间
int getTimeout();
// 返回定义的事务是否是只读的
boolean isReadOnly();
// 返回定义的事务名字
String getName();
}
TransactionStatus
public interface TransactionStatus extends SavepointManager, Flushable {
// 返回当前事务状态是否是新事务
boolean isNewTransaction();
// 返回当前事务是否有保存点
boolean hasSavepoint();
// 设置当前事务应该回滚
void setRollbackOnly();
// 返回当前事务是否应该回滚
boolean isRollbackOnly();
// 用于刷新底层会话中的修改到数据库,一般用于刷新如 Hibernate/JPA 的会话,
@Override
void flush();
// 当前事务否已经完成
boolean isCompleted();
}