Just a note: executeInTransaction may not always do what you want, as it is possible that the data never hits the disk if hibernate is still caching it in its session. Here the rollback will only clean out the session before it would write the stuff out. So if you rely on data hitting the db, it may not work.