zoukankan      html  css  js  c++  java
  • 事务相关知识点

    • 在对数据库进行一系列操作时,为了进行统一的提交或者回滚操作,需要进行事务管理,在使用事务时,需要有一个事务管理器,可以使用xml方式指定事务管理器,也可以使用Spring Boot中的@Configuration和@Bean注解指定:
    • xml方式
    <!--配置事务管理器,指定管理着某个数据源,保证数据的完整性和一致性,-->
    <bean id="transactionManager" 
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      		<property name="dataSource" ref="dataSource"/>
    </bean>
    <!-- 启动事务注解 --> 
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
    
    • 注解方式
    @Configuration
    public class MyAppConfig {
      	//注入数据源
        @Bean//id默认是用方法名作为id
      	//注入配置文件中的属性 关于数据库的相关配置
        @ConfigurationProperties("spring.datasource.xxx")
        public DataSource dataSource() {
            return DruidDataSourceBuilder.create().build();
        }
      	//注入事务管理器
      	//@Qualifier  指定需要装配的组件的id,而不是使用属性名
        @Bean
        public DataSourceTransactionManager transactionManager(@Qualifier("dataSource") DataSource dataSource) {
            DataSourceTransactionManager transactionManager = new DataSourceTransactionManager();
            transactionManager.setDataSource(dataSource);
            return transactionManager;
        }
    }
    

    事务失效原因

    • 方法的修饰符为public;
    • 数据库引擎InnoDB支持事务、MyISAM不支持事务;
    • 在具体的类或者方法上使用事务注解@Transactional;
    • 抛出RuntimeException异常,事务回滚;抛出Exception,事务不回滚;可以使用;
    • 使用try...catch..语句块对异常进行捕获并且未抛出RuntimeException异常;
    • A方法内部调用B方法,B方法上添加了事务注解,事务不生效,Spring的事务基于AOP实现。
  • 相关阅读:
    自动化测试-短信验证码处理
    使用HttpClient调用WebAPI接口,含WebAPI端示例
    C#使用HttpClient上传文件并附带其他参数
    WebClient和HttpClient, 以及webapi上传图片
    C#-微信公众平台接口-上传临时素材
    字节组数(二进制流)、Base64、图片(文件)、二进制相互之间转换
    理解并设计rest/restful风格接口
    使用RESTful风格开发
    GitHub OAuth 第三方登录示例教程
    OAuth 2.0 的四种方式
  • 原文地址:https://www.cnblogs.com/manongxiao/p/14275074.html
Copyright © 2011-2022 走看看