当我不得不使用Hibernate的回滚时

时间:2014-07-29 20:07:34

标签: java hibernate transactions

什么时候我必须使用Hibernate的回滚? 在异常的情况下,Hibernate会自行回滚,因此我的rollback行只是外部的:

Session session = HibernateUtil.getSessionFactory().openSession();

try {
session.beginTransaction();

test cl = (test) session.createCriteria(test.class)
.add(...)
.list()
.get(0); // Here's throws an exception, Hibernate was rolled back automatically.

session.getTransaction().commit();
}
catch (Exception ex)
{
session.getTransaction().rollback(); // The transaction already was rolled back. Unnecessary?
}

这是使用Hibernate回滚的唯一方法,我可以发明但回滚没有意义。

那么在哪些情况下我真的必须使用回滚?

1 个答案:

答案 0 :(得分:1)

如果没有异常,但你仍然想要角色,因为你在程序逻辑中发现了一些错误,那就是你可以使用它。就像您要更新多个实体和修改过的实体并根据业务逻辑在数据中发现一些异常一样,您可以调用回滚。