• 玩转Spring全家桶笔记 04 Spring的事务抽象、事务传播特性、编程式事务、申明式事务


    1.Spring 的事务抽象

    Spring提供了一致的事务模型

    • JDBC/Hibernate/Mybatis 操作数据
    • DataSource/JTA 事务

    2.事务抽象的核心接口

    PlatformTransactionManage

    • DateSourceTransactionManage
    • HibernateTransactionManage
    • JtaTransactionManage

    TransactionDefinition

    • Propagation
    • lsolation
    • Timeout
    • Read-only status

    3.事务传播特性7个

    4.事务隔离特性

    5.编程式事务

    在spring 提供的事务里面经常用下面两种进行事务的操作

    TransactionTemplate

    • TransactionCallback
    • TransactionCallbackWithoutResult

    PlatformTransactionManage

    • 可以传入TransactionDefinition

    6.测试编程式事务

    @SpringBootApplication
    public class DemoApplication implements CommandLineRunner {
    
        @Autowired
        private TransactionTemplate transactionTemplate;
        
        @Autowired
        private JdbcTemplate jdbcTemplate;
        
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    
        @Override
        public void run(String... args) throws Exception {
            
            System.out.println("事务执行前---》"+getCount());
            
            transactionTemplate.execute(new TransactionCallbackWithoutResult() {
                
                @Override
                protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) {
                
                    //事务执行中
                    jdbcTemplate.execute("insert into user(id,username,password) values(1,1,1)");
                    System.out.println("事务执行中---》"+getCount());
                    //回滚W
                    transactionStatus.setRollbackOnly();
                }
            });
            System.out.println("事务执行后---》"+getCount());
            
        }
        
        //统计数据条数
        public long getCount() {
            return jdbcTemplate.queryForObject("select count(*) from user", Long.class);
        }
    
    }

    7.申明式事务

    8.基于注解的配置方式

    开启事务注解的方式 @EnableTransactionManagement

    @Transactional

    1. transactionManage
    2. propagation
    3. isolation
    4. timeout
    5. readOnly
    6. 判断回滚

    9.代码参考:https://gitee.com/mrc1999/SpringBoot-study-book/tree/master/04TransactionTemplate

  • 相关阅读:
    ISO9126 软件质量模型
    java 15.String
    java 14. ArrayList常用方法
    java 13. 方法重载构造方法块this用法
    linux ssh连接心跳检查断开连接
    关于递归,我有几句话想说
    pytest 报错 ImportError: cannot import name 'main'
    递归回溯剪枝之斐波那契数列
    appium-doctor诊断信息不完整
    数据驱动,关键字驱动,混合驱动简单模型
  • 原文地址:https://www.cnblogs.com/ChromeT/p/10979684.html
Copyright © 2020-2023  润新知