Spring中事务控制的 API介绍
- PlatformTransactionManager 此接口是 spring 的事务管理器,它里面提供了我们常用的操作事务的方法
- 获取事务状态信息: TransactionStatus getTransaction(TransactionDefinition definition)
- 提交事务: void commit(TransactionStatus status)
- 回滚事务: void rollback(TransactionStatus status)
在日常开发中,通常使用此接口的实现类:
org.springframework.jdbc.datasource.DataSourceTransactionManager 使用springJDBC或mybatis进行持久化数据时使用
- org.springframework.orm.hibernate5.HibernateTransactionManager 使用Hibernate版本进行持久化数据时使用
- TransactionDefinition 它是事务的定义信息对象
- 获取事务对象名称 String getName()
- 获取事务隔离级别 int getIsolationLevel()
- 获取事务传播行为 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,没有超时限制。如果有,以秒为单位进行设置
- 是否是只读事务
建议查询时设置为只读
- TransactionStatus 此接口提供的是事务具体的运行状态
- TransactionStatus接口描述了某个时间点上事务对象的状态信息,包含有6个具体的操作
- 刷新事务: void flush()
- 获取是否存在存储点 boolean hasSavepoint()
- 获取事务是否完成 boolean isCompleted()
- 获取事务是否为新的事务 boolean isNewTransaction()
- 获取事务是否回滚 boolean isRollbackOnly()
- 设置事务回滚 void setRollbackOnly()
【spring】事务控制
最新推荐文章于 2024-05-25 07:30:00 发布