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实现。
  • 相关阅读:
    【git】git常用命令
    使用ssh脚本建立grid,oracle用户互信
    12.2地区,国家设置错误,导致乱码
    存储问题
    TFA卸载
    exp-00030 exp-00002
    ORA-03113错误
    Oracle 10g误删除数据文件
    查询10g数据库生产用户
    查看回话资源消耗情况
  • 原文地址:https://www.cnblogs.com/manongxiao/p/14275074.html
Copyright © 2011-2022 走看看