• spring 事务


    spring 事务

    特性 ACID

    • 原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。
    • 一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。
    • 隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。
    • 持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久化存储器中。

    两种方式

    spring支持两种事务方式:

    编程式事务管理

    编程式事务管理是侵入性事务管理,使用TransactionTemplate或者直接使用PlatformTransactionManager,对于编程式事务管理,Spring推荐使用TransactionTemplate。

    声明式事务管理

    声明式事务管理建立在AOP之上,其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,执行完目标方法之后根据执行的情况提交或者回滚。
    声明式事务管理的粒度是方法级别,而编程式事务管理是可以到代码块的,但是可以通过提取方法的方式完成声明式事务管理的配置。

    事务传播行为

    事务传播有七种,默认REQUIRED传播机制。
    事务的传播性一般用在事务嵌套的场景,比如一个事务方法里面调用了另外一个事务方法。

    含义
    REQUIRED 如果存在外层事务,则当前事务加入外层事务,一块提交,一块回滚。 如果不存在外层事务,则新建一个事务执行。
    SUPPORTS 如果外层有事务,则加入外层事务; 如果外层没有事务,则该方法以非事务方式执行。 完全依赖外层事务。
    MANDATORY 如果外层没有事务,则抛出异常。和NEVER相反。
    REQUIRES_NEW 如果外层有事务,则将外层事务挂起,新建一个事务执行,执行完毕,将外层事务恢复继续执行; 如果外层没有事务,直接新建一个事务执行。
    NOT_SUPPORTED 如果外层有事务,则将事务挂起,执行完之后恢复事务; 无论是否异常都不会回滚当前的代码。
    NEVER 不支持事务,如果外层存在事务,则抛出异常,和MANDATORY相反。
    NESTED 如果外层存在事务,则在该事务以嵌套事务方式执行; 如果不存在外层事务,则新建一个事务执行。
  • 相关阅读:
    Git与GitHub(利用git上传本地文件到GitHub上面)
    PHP之上传文件upload.php
    PHP之数据库连接配置文件
    MUI 之picker,dialog,a标签——刷新页面问题(保留picker选中的数据)
    MUI自定义select down 下拉框
    Google按ESC退出全屏(带iframe网站)解决问题方案
    提高开发效率 -> 图片
    sublime text
    头脑风暴
    http://www.uupoop.com/ps/
  • 原文地址:https://www.cnblogs.com/lick468/p/16100433.html
Copyright © 2020-2023  润新知