当前位置: 首页 > 知识库问答 >
问题:

可以在提交/回滚时在调用的hibernate中开始事务

司易安
2023-03-14

下面的代码是否可以正常工作,或者我需要在工作之前开始交易。

Session session = SessionFactory.openSession();

//do some work like session.save/Update

finally{
    session.beginTransaction().commit();
}

共有2个答案

艾泽语
2023-03-14

不,您需要管理事务,提交以获得即时效果,并且Hibernate引发的任何异常都是致命的,您必须回滚事务并关闭当前会话。

赵超
2023-03-14

不。当然,作为事务一部分的代码必须在事务的开始和提交之间。

这里(是什么留档说:

会话/事务处理习惯用法如下所示:

// Non-managed environment idiom
Session sess = factory.openSession();
Transaction tx = null;
try {
    tx = sess.beginTransaction();

    // do some work
    ...

    tx.commit();
}
catch (RuntimeException e) {
    if (tx != null) tx.rollback();
    throw e; // or display error message
}
finally {
    sess.close();
}
 类似资料:
  • 我正在处理一些旧的应用程序代码,其中似乎涉及到几个概念,因此我希望能够将它们改进为一个坚实而严格的实践。 基本上,整个代码都用这样的HibernateSessionRequest estFilter包装 然后,有一个拦截器,做这样的事情 然后还有更多的业务逻辑代码,包括更多的初始事务和会话清除等。 那么,问题是: 当在同一会话中多次调用beginTransaction时会发生什么 非常感谢。

  • 问题内容: 事务成功或回滚后,我需要调用某些方法。我正在使用 该应用程序使用一些外部Web服务,这些内部Web服务在回滚内部事务时需要“清除”。有没有办法在不使用声明式事务管理的情况下完成此操作。 问题答案: 在Hibernate中,您可以扩展和覆盖 方法并将其注册在 或中。 在Spring中,您可以使用扩展,覆盖和注册 。 编辑 使用Spring Aop向所有带注释的方法添加同步的示例

  • 我正在尝试创建一个事务方法,该方法调用其他几个事务方法以保存一些相互依赖的db实体。如果任何调用失败,我希望事务完全回滚。但是,这不是观察到的行为。这是我的代码: 也有and,但是当事务在第二次调用时失败时,第一个被提交。

  • 问题内容: 我们在服务器迁移方面遇到问题。我们有一个拥有大量事务的应用程序,它在一台数据库服务器上运行良好。但是,当将同一数据库传输到另一台服务器时。我们面临以下错误。 同一数据库将所有数据复制到另一台服务器。如果我们将连接字符串更改为旧服务器,则它可以正常工作。 有人可以建议吗? 问题答案: 您似乎遇到的问题是,一个数据库中的记录可以接受,而另一个数据库中的记录却可以接受。建议您查看两个数据库结

  • 问题内容: 我目前正在阅读Hibernate文档,并且遇到以下引号: 如果Session引发异常(包括任何SQLException),请立即回滚数据库事务,调用Session.close()并丢弃Session实例。某些会话方法不会使会话保持一致状态。Hibernate抛出的异常不能被视为可恢复的。通过在finally块中调用close()来确保关闭会话。 就我而言,这一切都说得通,但这确实让我想

  • 我需要在事务成功或回滚后调用一些方法。我使用as 应用程序使用一些外部web服务,当内部事务回滚时,这些服务需要“清理”。有没有一种方法可以在不使用声明性事务管理的情况下实现这一点。