Well, Hibernate's reference manual says the following (section 13.2.3 on Exception Handling): If the Session throws an exception, including any SQLException, immediately rollback the database transaction, call Session.close() and discard the Session instance.