spring中的的事务控制

89 阅读2分钟

编程式事务控制相关对象

  • PlatformTransactionManager:
    • 注意:
    • PlatformTransactionManager 是接口类型,不同的Dao层技术有不同的实现类,例如:Dao层技术是jdbc或mybatis时:org.springframework.jdbc.datasource.DataSourceTransactionManager。Dao层技术是Hibernate:org.springframework.orm.hibernate5.HibernateTransactionManager
  • TransactionDefinition事务的定义信息的对象,里面有如下方法:
    • 事务隔离级别:
    • 事务传播行为
  • TransactionStatus:接口提供的是事务具体的运行状态,方法如下:

基于XML的声明式事务控制

什么是声明式事务控制

Spring的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明,就是在配置文件中声明,用在Spring配置文件中声明式的处理事务来代替代码式的处理事务

声明式事务处理的作用

  • 事务管理不侵入开发的组件。具体来说,业务逻辑对象就不会意识到自己正在事务管理之中,事实上也应如此,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分,如果想要改变事务管理策划的话,也只需要在定义文件中重新配置即可
  • 在不需要事务管理的时候,只需要在设定文件上修改一下,即可移除事务管理服务,无需改变代码重新编译,这样维护起来更加方便
  • Spring声明式事务控制底层就是AOP

声明式事务控制的实现

  • 声明式事务控制明确事项

    • 谁是切点
    • 谁是通知
    • 配置切面
  • 切点方法的事务参数的配置

    • 其中,tx:method代表切点方法的事务参数的配置

    • name:切点方法名称(不加括号)

    • isolation:事务的隔离级别

    • propogation:事物的传播行为

    • timeout:超时时间

    • read-only:是否只读

基于注解的声明式事务控制

注解配置声明式事务控制解析

  • 使用@Transactional在需要进行事务控制的类或是方法上修饰,注解可用的属性和xml相同
  • 注解使用在类上,那么该类的所有方法都使用同一套注解参数配置
  • 使用在方法上,不同的方法可以才用不同的事务参数配置
  • xml配置文件中要开启事务的注解驱动tx:annotation-driver/

注解声明式事务控制的配置要点

  • 平台事务管理器配置(xml)
  • 事务通知的配置(@Transactional)
  • 事务注解驱动的配置(tx:annotation-driver/)

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 11 天,点击查看活动详情