zoukankan      html  css  js  c++  java
  • 在代码中,插入数据到数据库时,如果不使用事务,将会导致速度极慢

    今天测试,150条数据,调用jdbcTemplate.batchUpdate语句时,未开启事务的情况下,6m左右才能执行完,开启事务后,几百毫秒即可执行完,差距是非常大的。

    因为是在一个线程池中执行的,所以任务是new出来的,不能作为bean来处理,所以不能使用注入事务的方式,只能手动调用事务管理器。

    首先,从bean中获取事务管理器bean

    ApplicationContext().getBean(DataSourceTransactionManager.class);

    其次,new一个事务定义

    DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); // 事物隔离级别,开启新事务

    开启事务
    TransactionStatus status = dataSourceTransactionManager.getTransaction(def); // 获得事务状态

    提交事务

    dataSourceTransactionManager.commit(status);

    回滚事务

    dataSourceTransactionManager.rollback(status);

    至于事务为何影响这么大,等待以后去研究咯

  • 相关阅读:
    [ZJOI2010]基站选址
    [SDOI2008]Sue的小球
    访问计划
    奥义商店
    codeforces 809E Surprise me!
    codeforces 888G Xor-MST
    [HAOI2015]数字串拆分
    小奇分糖果
    小奇的花园
    BZOJ4711 小奇挖矿
  • 原文地址:https://www.cnblogs.com/guangshan/p/4766431.html
Copyright © 2011-2022 走看看