【spring】事务控制

Spring中事务控制的 API介绍

  • PlatformTransactionManager    此接口是 spring 的事务管理器,它里面提供了我们常用的操作事务的方法
  1. 获取事务状态信息: TransactionStatus  getTransaction(TransactionDefinition definition)
  2. 提交事务:  void  commit(TransactionStatus status)
  3. 回滚事务:  void  rollback(TransactionStatus  status)

在日常开发中,通常使用此接口的实现类:

  1. org.springframework.jdbc.datasource.DataSourceTransactionManager    使用springJDBC或mybatis进行持久化数据时使用
  2. org.springframework.orm.hibernate5.HibernateTransactionManager            使用Hibernate版本进行持久化数据时使用
  • TransactionDefinition    它是事务的定义信息对象
  1. 获取事务对象名称      String getName()
  2. 获取事务隔离级别     int  getIsolationLevel()
  3. 获取事务传播行为       int  getPropagationBehavior()
  4. 获取事务超时时间       int  getTimeout()
  5. 获取事务是否只读       boolean   isReadOnly()       读写型事务:增加、删除、修改开启事务     只读型事务:执行查询时也会开启事务
  • 事务的隔离级别   事务隔离级别反映事务提交并发访问时的处理态度
  1. ISOLATION_DEFAULT    默认级别,归属下列某一种(和数据库一致)
  2. ISOLATION_READ_UNCOMMITTED     可以读取未提交数据
  3. ISOLATION_READ_COMMITTED     只能读取已提取数据,解决脏读问题(Oracle默认级别)
  4. ISOLATION_REPEATABLE_READ    是否读取其他事务提交修改后的数据,解决不可重复读问题(MySQL默认级别)
  5. ISOLATION_SERIALIZABLE    是否读取其他事务提交添加后的数据,解决幻读问题
  • 事务的传播行为
  1. REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。一般的选 择(默认值)
  2. SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行(没有事务)
  3. MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常
  4. REQUERS_NEW:新建事务,如果当前在事务中,把当前事务挂起。
  5. NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起
  6. NEVER:以非事务方式运行,如果当前存在事务,抛出异常 NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行 REQUIRED 类似的操作。
  • 超时时间

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

  • 是否是只读事务

建议查询时设置为只读

  • TransactionStatus       此接口提供的是事务具体的运行状态
  1. TransactionStatus接口描述了某个时间点上事务对象的状态信息,包含有6个具体的操作
  2. 刷新事务:  void  flush()
  3. 获取是否存在存储点        boolean  hasSavepoint()
  4. 获取事务是否完成     boolean  isCompleted()
  5. 获取事务是否为新的事务     boolean   isNewTransaction()
  6. 获取事务是否回滚        boolean  isRollbackOnly()
  7. 设置事务回滚       void  setRollbackOnly()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值