We are performance monitoring our application and my DBA let me know that we had over 3 MILLION rollbacks in a single day. We are using WebSphere to DB2 on Win2k3 servers.
I looked in our code and could not find anything. Used p6spy and found that every time queryForXXX is called I received a rollback. Stepping through the queryForList code in SqlMapExecutorDelegate.java the autoStartTransaction starts a transaction if none is present and since we don't have commitRequired set, the autoEndTransaction will cause a rollback. I assume there is a good reason to start the transaction here. It seems like extra work creating a transaction that will always be rolled back. Can someone explain why this is good to me so I can forward the information to my DBA? Any links supporting the argument would be great. Is there a way to use the queryForXXX without creating a transaction? I assume it is better to not have commitRequired? Thanks for your time. Tom Henricksen Consultant Advanced Technologies Group, Inc.