zoukankan      html  css  js  c++  java
  • Spring声明式事务

     1 <!--*****************************************************************************************-->
     2         spring声明式事务(注解)
     3         1)在xml配置文件中
     4             启用tx命名空间
     5             
     6                 <!--配置事务管理器 ,
     7                 这是jdbc的事务管理器  , datasource是一个实现jdbc的源
     8                 对于hibernate来说是一样的
     9                 -->
    10             <bean id =" transactionManager" class = "org.springframework.jdbc.datasource.DataSourceTransactionManager" >
    11             <constructor-arg ref = "datasource"></constructor-arg>
    12             </bean>
    13             
    14             <!-- 启用事务注解  transaction-manager的值需和上面的id对应-->
    15             <tx:annotation-driven transaction-manager="transactionManager" />
    16         
    17             在相应的业务逻辑上添加注解@Transactional
    18             
    19             使用propaation设置事务传播行为
    20             如:
    21                 @Transactional(propaation = Propaation.REQUIRED) //这也是spring事务传播的默认行为
    22                 
    23             事务的传播行为:(当一个事务调用另一个事务的时候)
    24                 如:A.show()是一个事务
    25                     B.run( class A)
    26                     {
    27                         A.show();//这个时候就会存在事务的传播行为,因为类A里面的show本身也是一个事务
    28                     }
    29                     
    30             REQUIRED:默认传播行为。俗称有就可以,无需重新开启一个事务,只要事务存在就可以了。
    31                       但是必须整体事务完成,如发生异常,则回滚已经完成的事务部分。
    32                       
    33             
    34             REQUIRES_NEW:创建一个新的事务。本身被挂起
    35                          整个过程中出现异常,已经完成的事务生效。
    36             
    37             事务隔离级别:
    38                 isolation指定事务的隔离级别
    39                 最常用的是读已提交Isonation.READ.COMMITTED;
    40 41                 @Transactional(propaation = Propaation.REQUIRED ,isolation = Isonation.READ.COMMITTED )
    42                 
    43             异常回滚:
    44                 默认情况下spring的声明式事务对所有的运行时异常回滚。
    45                 也可以设置对应的属性
    46                 rollbackFor:    异常回滚
    47                 noRollbackFor:异常不回滚
    48                     如:
    49                         @Transactional(propaation = Propaation.REQUIRED ,isolation = Isonation.READ.COMMITTED , noRollbackFor = {CLASSA.class} )
    50                         对CLASSA不回滚
    51                 
    52             指定事务是否为只读(只读事务):
    53                 readonly = true/false
    54                 如:
    55                     @Transactional(propaation = Propaation.REQUIRED ,isolation = Isonation.READ.COMMITTED , noRollbackFor = {CLASSA.class}  ,readonly = true )
    56         
    57             超时
  • 相关阅读:
    在CentOS 8 上 部署 .Net Core 应用程序
    Asp.Net Core 查漏补缺《一》 —— IStartFilter
    接口相关数据日志打印
    退款
    识别身份证
    生成二维码
    打造一款简单易用功能全面的图片上传组件
    Redis过期策略+缓存淘汰策略
    Redis主从复制
    .net 平台常用框架
  • 原文地址:https://www.cnblogs.com/wslblog/p/4798312.html
Copyright © 2011-2022 走看看