首页 > 其他分享 >spring事务控制的 API

spring事务控制的 API

时间:2022-12-24 20:22:09浏览次数:39  
标签:事务 boolean spring 获取 API 当前 ISOLATION TransactionStatus

1、PlatformTransactionManager
spring 的事务管理器,它里面提供了我们常用的操作事务的方法

PlatformTransactionManager接口提供事务操作的方法
获取事务状态信息
TransactionStatus getTransaction(TransactionDefinition definition)
提交事务
void commit(TransactionStatus status)
一回滚事务
void rollback(TransactionStatus status)

真正管理事务的对象

org.springframework.jdbc.datasource.DataSourceTransactionManager
使用 Spring JDBC 或 iBatis 进行持久化数据时使用
org.springframework.orm.hibernate5.HibernateTransactionManager
使用 Hibernate 版本进行持久化数据时使用

2、TransactionDefinition
事务的定义信息对象

获取事务对象名称
String getName()
获取事务隔离级
int getlsolationLevel()
获取事务传播行为
int getPropagationBehavior()
获取事务超时时间
int getTimeout()
获取事务是否只读
boolean isReadOnly()

事务的隔离级别

事务隔离级反映事务提交并发访问时的处理态度
ISOLATION DEFAULT
默认级别,归属下列某一种
ISOLATION READ UNCOMMITTED
可以读取未提交数据
ISOLATION READ COMMITTED
只能读取已提交数据,解决脏读问题(Oracle默认级别)
ISOLATION REPEATABLE READ
是否读取其他事务提交修改后的数据,解决不可重复读问题(MySQL默认级别)
ISOLATION SERIALIZABLE
是否读取其他事务提交添加后的数据,解决幻影读问题

事务的传播行为

REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。一般的选
择(默认值)
SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行(没有事务)
MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常
REQUERS_NEW:新建事务,如果当前在事务中,把当前事务挂起。
NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起
NEVER:以非事务方式运行,如果当前存在事务,抛出异常
NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行 REQUIRED 类似的操作。

超时时间

默认值是-1,没有超时限制。如果有,以秒为单位进行设置。

是否是只读事务

建议查询时设置为只读

3、TransactionStatus
提供的是事务具体的运行状态

TransactionStatus接口描述了某个时间点上事务对象的状态信息
刷新事务
void flush()
获取是否是否存在存储点
boolean hasSavepoint()
获取事务是否完成
boolean isCompleted()
获取事务是否为新的事务
boolean isNewTransaction()
获取事务是否回滚
boolean isRollbackOnly()
设置事务回滚
void setRollbackOnly()

标签:事务,boolean,spring,获取,API,当前,ISOLATION,TransactionStatus
From: https://www.cnblogs.com/yanshiheng/p/17003336.html

相关文章