Today test, 150 data, call Jdbctemplate.batchupdate statement, the case of not open transaction, 6m or so to execute, after the transaction, hundreds of milliseconds to execute, the gap is very large.
Because it is executed in a pool of threads, the task is new and cannot be processed as a bean, so the transaction manager can only be invoked manually by using the injected transaction.
First, get the transaction manager bean from the bean
ApplicationContext (). Getbean (Datasourcetransactionmanager.class);
Second, a new transaction defines
Defaulttransactiondefinition def = new Defaulttransactiondefinition ();
Def.setpropagationbehavior (transactiondefinition.propagation_requires_new); Things isolation level, opening new transactions
Open transaction
Transactionstatus status = Datasourcetransactionmanager.gettransaction (Def); Get transaction status
Commit a transaction
Datasourcetransactionmanager.commit (status);
Rolling back a transaction
Datasourcetransactionmanager.rollback (status);
As to why the matter has affected so much, wait for it to be researched later
In code, when inserting data into a database, if you do not use transactions, it can result in very slow