spring注解事务行为之@Transactional

属性:propagation
    含义:REQUIRED:方法A调用时没有事务新建一个事务,当在方法A调用另一个方法B的
    时候,方法B将使用相同的事务。若是方法B发生异常须要数据回滚的时候,整个事务数据
    回滚。
           REQUIRES_NEW:对于方法A和B,在方法调用的时候不管是否有事务都开启一个新的 的做用是将
    事务。若是方法B有异常不会致使方法A的数据回滚。
           NESTED:和REQUIRES_NEW相似,仅支持JDBC,不支持JPA和Hibernate
           SUPPORTS:方法调用时有事务就用事务,没有就不用。
           NOT_SUPPORTED:强制方法不在事务中执行,如有事务,在方法调用到结束阶段事务
    将会被挂起
           NEVER:强制方法不在事务中执行,如有事务则抛出异常。
           MANDATORY:强制方法在事务中执行,若无事务则抛出异常。           
    默认值:REQUIRED
    
    属性:isolation
    含义:READ_UNCOMMITTED:对于A事务里修改了一条记录但没有提交事务,在B事务能够读取到
    修改后的记录,会致使脏读、不可重复读及幻读。
          READ_COMMITTED:只有当在A事务里修改了一条记录且提交事务以后,B事务才能够读取到
    提交后的记录。阻止脏读,但可能会致使不可重复读和幻读。
          REPEATABLE_READ:不只能实现READ_COMMITTED的功能,并且还能阻当A事务读取了一条
    记录,B事务将不容许修改这条记录。阻止脏读和不可重复读,但可出现幻读。
          SERIALIZABLE:此级别下事务是顺序执行的,能够避免上述级别的缺陷,但开销较大
          DEFAULT:使用当前数据库的默认隔离界级别,如Oracle、SQL Server是READ_COMMITTED
    Mysql是REPEATABLE_READ.
    默认值:DEFAULTsql

    属性:timeout
    含义:指定事务过时时间,默认为当前数据库的事务过时时间
    默认值:TIMEOUT_DEFAULT
     
    属性:readOnly
    含义:指定当前事务是否只读事务
    默认值:false
    
    属性:rollbackFor
    含义:指定哪一个或者哪些异常能够引发事务回滚
    默认值:Throwable的子类
    
    属性:noRollbackFor
    含义:指定哪一个或者哪些异常不能够引发事务回滚
    默认值:Throwable的子类
    
    用法:@Transactional注解能够在类和方法上使用,当注解在类上则全部public方法都是开启事务的,
    当注解在类和方法同时使用了@Transactional注解则会重载方法级别的注解。数据库

相关文章
相关标签/搜索