下面的代码是否可以正常工作,或者我需要在工作之前开始交易。
Session session = SessionFactory.openSession();
//do some work like session.save/Update
finally{
session.beginTransaction().commit();
}
不,您需要管理事务,提交以获得即时效果,并且Hibernate引发的任何异常都是致命的,您必须回滚事务并关闭当前会话。
不。当然,作为事务一部分的代码必须在事务的开始和提交之间。
这里(是什么留档说:
会话/事务处理习惯用法如下所示:
// 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服务,当内部事务回滚时,这些服务需要“清理”。有没有一种方法可以在不使用声明性事务管理的情况下实现这一点。