I am not sure whether I have figured out your problem.
You have split a database update into a bunch of steps (transactions( using Statement. Can you try to use java.sql.CallableStatement?
Hi Jabber, I have a simple problem for database table locking. Why it not always working properly?