Well, it really, really depends.
Getting a connection from a pool hits the database only if the pool was configured to "verify" the connection it hands out. In any case, connection pool specific again, and not really related to your question.
Question 1: setting the autocommit does not incur DB hit in my opinion. I would always suggest setting it immediately after obtaining a connection,
especially if you're using update batching.
Question 2: certainly no additional overhead. I would probably put all code in that method into one
try block, so that I could handle all potential
SQLExceptions in one place.
I think you're micro-optimizing your code far beyond reasonable levels. If anything,
you should read your JDBC driver documentation (if available), there might be some sections related to performance.
And for example, if you were using JDBC Oracle driver which comes with Oracle 10g, using batches does not yield topmost performance, as there is separate, Oracle batching mechanism for that. In Oracle 11g driver, JDBC batching does provide the best performance. Just to illustrate there may be things beyond the code that might affect the performance much, much more.