In my opinion,
you should almost never auto-commit. Implicit execution is generally bad, because it brings with it baggage that you don't often need. Auto-commit is safe for people unfamiliar with databases. But, for those who are comfortable with the basics, it really makes sense to commit explicitly and to perhaps commit sparingly (at some higher logical level).
For example, suppose you want to do an all-or-nothing insert of 100 rows. If one row fails, none of the other rows should be inserted. In that case, you should insert each of the rows without committing and then do the commit at the end. Not only will your batch processing work the way you want it to, but you will get much better performance.