• 【spring学习】spring注解 @Transactional学习


    在看springboot 实战这本书的时候看到了spring 事物注解。为此记录一下。
        Spring支持声明式事务,既使用注解来选择需要使用事务的方法,他使用@Transactional注解在方法上声明该方法需要事务支持,这是一个基于AOP的实现操作。备注解的方法在被调用时,SPring开启一个新的事务,当方法完无运行异常结束后,Spring会提交这个事务。
        @EnableTracsactionManagement开始声明式事务的支持,使用该注解后,Spring容器会自动扫描注解@TransactionalManager的类和方法
    有关@Transacational的属性

    propagationtion:定义了事务的生命周期,默认为REQUIRED

        required:方法A调用调用时,没有事务新建一个事务,当在方法A调用另外一个方法B的时候,方法B将使用相同的事务,;如果方法B发生异常需要数据回滚的时候,整个事务数据回滚。

        requried_new:对于方法A和方法B在被调用的时候,无论是否有事务,都将开启一个新的事务,如果方法A有异常,方法B的数据不会回滚。
        supports:方法调用的时候,有事务就调用事务,没有事物就不使用事物。
        no_supports:强制方法不在事务中执行,如有事务,在方法调用的到结束阶段事务将被挂起。
        never:强制方法不在事务中执行,如有事务则抛出事务、
        mandatory:强制方法在事务中执行,若无事务将抛出异常。

    isolation:isolation的默认级别 default

        isolation:隔离 决定了事物的完整性,处理在多事务对相同的数据下的处理机制,主要包含下面的隔离级别

        read_uncommitted:对于在A事务里修改了一条记录但没有提交事务,在B事务中可以读取到修改后的记录,可导致赃读。
        不可重复读和幻读。
        read_committed:只有当事务A修改了一条记录提交之后,B事务才可以读取到提交后的记录,阻止了赃读,但是不可重复读,和幻读避免不了。
        repeatable_read:A在读取一条记录 B不允许修改

        isolation:

                serializable:此级别下事务是顺序执行的,可避免上述级别的缺陷,但开销较大。

                default:使用当前数据库的默认隔离界别:

                    oracle、sql Server是read_committied  Mysql是repeartable_read;

        timeout:事务过期时间

        readonly:指明当前事务是否是只读。

        rollbackFor:指定哪个或者那些异常可以引起事务回滚。Throwable的子类
        noRollBackFor:指定哪个或那些异常不可以引起回滚。Throwable的子类。

        当@Tracsactional被注解到来中,所有的public的方法上将开启事务注解。如果类和方法上都是用@Tracsactional注解
    方法上的注解将会覆盖类级别上的注解。

            

  • 相关阅读:
    《人月神话》读后感-何保委
    软件工程2017第二次作业随笔-何保委
    软件工程2017第一次作业随笔
    实验吧 REVERSE
    浙大ctf REVERSE
    eclipse安装
    表单
    【南京邮电】maze 迷宫解法
    看雪.TSRC 2017CTF秋季赛第三题
    使用Z3破解简单的XOR加密
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860960.html
Copyright © 2020-2023  润新知