CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

07 April, 2024

autocommit when using Spring BatchSqlUpdate

 Programing Coderfunda     April 07, 2024     No comments   

We have been using spring with MSSQL jdbc driver for a while. It's an older project where we have an applicatonContext.xml file that defines a datasource transaction manager and each method uses a proxy.


If we switch to using Spring's BatchSqlUpdate do we need to somehow disable autocommit for this call to gain the full benefit? I read lots of posts about this but they all give examples with you are building your own queries and using your connection directly like this and many more: does my batch really execute as expected if autocommit is set to true?


But I can't find anyone talking about when doing it the "spring way". The connection will default to autocommit=true and that's good for all of our other methods. But now we have just a couple of batch ones and I don't see a method to set autocommit to false for a specific method/class.


I'll give more details, but does anyone know if we should disable autocommit for this (like it sounds from other posts) and if so how?


The details are we have this in the applicationContext.xml:









PROPAGATION_SUPPORTS
PROPAGATION_SUPPORTS
PROPAGATION_SUPPORTS
PROPAGATION_REQUIRED






and the datasource comes from wildfly standalone.xml. This all has been working great. Now we are working on using batch mode. Our sql update methods are like this (somewhat simplified)
protected class UpdateUserUpdate extends SqlUpdate {
public UpdateUserUpdate(DataSource ds) {
setDataSource(ds);
setSql("update whatever.. set value = ?")
declareParameter(new SqlParameter(Types.VARCHAR));
compile();
}
public int myupdate(String s) {
Object[] params = new Object[] { s };
return update(params);
}
}



And if we simply change the parent class to BatchSqlUpdate, it does work fine:
protected class UpdateUserUpdateBatch extends BatchSqlUpdate {
...copy as before but now add...
setBatchSize(1000);
}



And we do see some improvement. But would we see more if we can somehow disable the autocommit or is that even possible?


Or would it be faster to just create a method, feed it our array of entries, get a new connection from the datasource, and use PreparedStatement, like:
con = dataSource.getConnection();
con.setAutoCommit(false);
PreparedStatement pstmt = con.prepareStatement(sql);
do my add batch/executebatch in a 1000 loop...
pstmt.executeBatch();
con.commit();
con.setAutoCommit(false);



That is not the spring way but is it faster because I turned of autocommit or can you turn it of on BatchSqlUpdate?


Thank you!
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Sitaare Zameen Par Full Movie Review
     Here’s a  complete Vue.js tutorial for beginners to master level , structured in a progressive and simple way. It covers all essential topi...
  • AI foot tracking model
    I am a student doing a graduation project. I urgently need to deal with this model (I am attaching a link). I've never worked with pytho...
  • Laravel Search String
      Laravel Search String is a package by   Loris Leiva   that generates database queries based on one unique string using a simple and custom...
  • Writing and debugging Eloquent queries with Tinkerwell
    In this article, let's look into the options that you can use with Tinkerwell to write and debug Eloquent queries easier. The post Wr...
  • The token request was rejected by the remote server
    error:invalid_granterror_description:The token request was rejected by the remote server.error_uri: https://documentation.openiddict.com/err...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (69)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • July (4)
  • September (100)
  • August (50)
  • July (56)
  • June (46)
  • May (59)
  • April (50)
  • March (60)
  • February (42)
  • January (53)
  • December (58)
  • November (61)
  • October (39)
  • September (36)
  • August (36)
  • July (34)
  • June (34)
  • May (36)
  • April (29)
  • March (82)
  • February (1)
  • January (8)
  • December (14)
  • November (41)
  • October (13)
  • September (5)
  • August (48)
  • July (9)
  • June (6)
  • May (119)
  • April (259)
  • March (122)
  • February (368)
  • January (33)
  • October (2)
  • July (11)
  • June (29)
  • May (25)
  • April (168)
  • March (93)
  • February (60)
  • January (28)
  • December (195)
  • November (24)
  • October (40)
  • September (55)
  • August (6)
  • July (48)
  • May (2)
  • January (2)
  • July (6)
  • June (6)
  • February (17)
  • January (69)
  • December (122)
  • November (56)
  • October (92)
  • September (76)
  • August (6)

Loading...

Laravel News

Loading...

Copyright © CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda