在代码中,插入数据到数据库时,如果不使用事务,将会导致速度极慢

今天测试,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);

 

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

posted @ 2015-08-28 14:17  光闪  阅读(1570)  评论(0编辑  收藏  举报