zoukankan      html  css  js  c++  java
  • spring事务配置

    工作中不一定是每执行一条sql语句就进行提交,有可能是一批业务的操作,这一批sql语句,要么全部执行成功,要么全部执行失败。因此就需要用到事务来进行管理。

    在spring中,提供了对事务的管理类。

    首先需要在beans的配置文件上添加tx的命名空间和地址

    xmlns:tx="http://www.springframework.org/schema/tx"
    
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-4.3.xsd

    同时配置进行事务管理的数据源

        <bean id="transactionManager"
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource" />
        </bean>
        
        <tx:annotation-driven transaction-manager="transactionManager" />
        

    以上配置完成后,即可在程序的数据持久层进行事务管理。

    在想要进行事务控制的类或public方法上使用注解@Transactional

        @Override
        @Transactional
        public void insert(List<TPjXjypsq> list) {
            //TODO
        }

    如上,如果一个类中,类和方法都使用了该注解,以方法上的注解为优先。如果方法的修饰词不是public,虽然不会报错,但事务不会被管理。

    @Transactional中的属性

    propagation:可选的传播性设置,参数为枚举

    isolation:可选的隔离性设置,参数为枚举

    readOnly:可读性,参数为boolean

    timeout:超时时间,以s为单位,参数为int类型

    rollbackFor:遇见指定的异常则回滚,参数是class类型,且必须为Throwable子类,可以是一个参数rollbackFor=Exception.class或多个rollbackFor={a.class,b.class}。

    rollbackForClassname:遇见指定的异常的名称则回滚,参数是String,但必须是Throwable子类的名称。可以是一个参数或多个。

    noRollbackFor:遇见指定的异常则必须不回滚,参数同rollbackFor。

    noRollbackForClassname:遇见指定的异常的名称则必须不回滚,参数同rollbackForClassname。

    由于以上方式需要对每个进行事务管理的地方都增加注解@Transactional,因此可以使用aop配合,对多个类(方法)进行事务管理。

    注意事项

    1、@Transactional默认抛出异常为runableException类及下面子类,如果所抛出的类不属于该范围,例如抛出Exception类型的异常,则不会触发事务回滚。

    2、@Transactional只对public类型有效,其他类型虽然不会报错,但是均无效。

    3、@Transactional只对方法中抛出的异常触发回滚,如果异常在方法中已经被捕获和处理,则不会触发回滚。

  • 相关阅读:
    js如何获取当天日期的开始时间和结束时间
    bootstrapTable 刷新数据
    vue全家桶
    JavaScript数组是否存在及是否存在某个元素
    asp.net core 负载均衡集群搭建(centos7+nginx+supervisor+kestrel)
    (转) 将ASP.NET Core应用程序部署至生产环境中(CentOS7)
    mysql 5.7 docker 主从复制架构搭建
    CentOS6.x生产环境下一键安装mono+jexus的脚本,自启动,带服务,版本号自控
    使用 Json.Net 对Json文本进行 增删改查
    C# dynamic 动态创建 json
  • 原文地址:https://www.cnblogs.com/yxth/p/8489867.html
Copyright © 2011-2022 走看看