Hibernate.update需要重试吗?

时间:2018-05-08 12:29:30

标签: java hibernate

我需要确保对实体的更新不会屈服于网络错误等间歇性问题。

通过调用getSession().update(object);来保存实体,其中getSession()返回当前的Hibernate会话。

我是否需要重试update语句?或者Hibernate提供某种保证吗?

2 个答案:

答案 0 :(得分:2)

如果对象未更新,您可以将代码包含在try-catch块中,当您在catch块中处理异常时,它将回滚事务。喜欢以下

Session sess = factory.openSession();
 Transaction tx;
 try {
     tx = sess.beginTransaction();
     sess.update(someobject);
     tx.commit();
 }
 catch (Exception e) {
     if (tx!=null)
     tx.rollback();
     throw e;
 }
 finally {
     sess.close();
 }

答案 1 :(得分:1)

您可以将其包围在try-catch块中,并在发生故障时采取补偿措施。例如,您可以将失败写入消息队列,以便稍后处理。