On my actual application, I have a DBCP connection pool which doesn\'t have JDBC autoCommit=false set. It seems to have the default autoCommit=true. This is probably a mista
PlatformTransactionManager is an interface, so I would not blanket say that all implementations set AutoCommit = false, however the most common implementation (DataSourceTransactionManager) does set AutoCommit = false. see code snippet below from the doBegin method:
if (con.getAutoCommit()) {
txObject.setMustRestoreAutoCommit(true);
if (logger.isDebugEnabled()) {
logger.debug("Switching JDBC Connection [" + con + "] to manual commit");
}
con.setAutoCommit(false);
}
txObject.getConnectionHolder().setTransactionActive(true);
Now as you stated, it makes perfect sense to do so or you would not have a rollback segment to activate a rollback on.