zoukankan      html  css  js  c++  java
  • 简单说说spring的事务机制,以及是如何管理的?

    事务管理可以帮助我们保证数据的一致性,对应企业的实际应用很重要。

    Spring的事务机制包括声明式事务编程式事务。

    编程式事务管理:Spring推荐使用TransactionTemplate实际开发中使用声明式事务较多。

    声明式事务管理:将我们从复杂的事务处理中解脱出来,获取连接,关闭连接、事务提交、回滚、异常处理等这些操作都不用我们处理了,Spring都会帮我们处理。

    声明式事务管理使用了AOP面向切面编程实现的,本质就是在目标方法执行前后进行拦截。在目标方法执行前加入或创建一个事务,在执行方法执行后,根据实际情况选择提交或是回滚事务。

    如何管理的:

    Spring事务管理主要包括3个接口,Spring的事务主要是由他们三个共同完成的。

    1)PlatformTransactionManager:事务管理器--主要用于平台相关事务的管理

     主要有三个方法:commit  事务提交;

          rollback  事务回滚;

          getTransaction  获取事务状态。

    2)TransactionDefinition:事务定义信息--用来定义事务相关的属性,给事务管理器PlatformTransactionManager使用

    这个接口有下面四个主要方法:

    getIsolationLevel:获取隔离级别;

    getPropagationBehavior:获取传播行为;

    getTimeout:获取超时时间;

    isReadOnly:是否只读(保存、更新、删除时属性变为false--可读写,查询时为true--只读)

    事务管理器能够根据这个返回值进行优化,这些事务的配置信息,都可以通过配置文件进行配置。

    3)TransactionStatus:事务具体运行状态--事务管理过程中,每个时间点事务的状态信息。

    例如它的几个方法:

    hasSavepoint():返回这个事务内部是否包含一个保存点,

    isCompleted():返回该事务是否已完成,也就是说,是否已经提交或回滚

    isNewTransaction():判断当前事务是否是一个新事务

     

    声明式事务的优缺点:

    优点

    不需要在业务逻辑代码中编写事务相关代码,只需要在配置文件配置或使用注解(@Transaction),这种方式没有侵入性。

    缺点

    声明式事务的最细粒度作用于方法上如果像代码块也有事务需求,只能变通下,将代码块变为方法

  • 相关阅读:
    shell 从键盘读取输入时删除输入的字符
    spring boot 下 mapper接口与xml文件映射问题
    tcpdump
    Linux TCP自连接问题
    git commit 合并到指定分支
    工作教训总结
    git 撤销修改和版本回退
    Java 注解方式校验请求参数
    JVM 监控工具——jconsole
    排查Full GC
  • 原文地址:https://www.cnblogs.com/wanglichaoya/p/9105026.html
Copyright © 2011-2022 走看看