事务相关

事务的几个接口

PlatformTransactionManager

这里面有commit方法和rollback方法,谁有这两个方法,谁就是通知bean
  • 我们在开发中都是使用其实现类:
    • DataSourceTransactionManager

    使用spring JDBC或mybatis持久化数据的时候使用

    • HibernateTransactionManager

    使用Hibernate版本进行持久化数据时使用

TransactionDefinition

它是事务的定义信息对象。里面有方法如下:

  • 获取事务的名称

    • String getName()

  • 获取事务的隔离级别

    • int getIsolationLevel()

     事务的隔离级别默认有四个,spring默认情况下 是使用数据库的默认隔离级别
     ISOLATION_DEFAULT:默认级别数据库使用哪种隔离级别,spring就是哪种隔离级别

  • 获取事务的传播行为

    • int getPropagationBehavior()

    什么情况下必须有事务,什么情况可有可没有?
     增删改必须有事务;查询的时候,事务是可有可没有的。
     REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务,加入到这个事务中。一般的选择(默认值,增删改操作的时候,不管原来有没有事务,最终肯定会有事务的。)
     SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行(没有事务,执行查询操作的时候,如果当前有事务就用,没有事务就拉倒。)


  • 获取事务超时时间

    • int getTimeOut()

    是指提交和回滚多长时间就过期了,-1就是永远不过期

  • 获取事务是否只读

    • boolean isReadOnly()
      • 读写型事务:增加、删除、修改开启事务
      • 只读型事务:执行查询时,也会开启事务

在我们配置事务管理器的同时,我们还需要指定事务相关的属性。就是在TransactionDefinition里面的几个方法。还有就是要对谁进行控制,就是切入点表达式

是使用xml配置事务 还是使用注解配置事务? 我毫无疑问的会选择xml,因为xml只要配置一次 就可以一劳永逸的解决所有service的事务问题,而注解 有可能在一个service中都需要配置好几遍。 就是因为事务的不同类型,读写型还是只读型,从配置简易程度来说 还是注解的配置更简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值