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

异常情况下事务对象的值是多少??

符允晨
2023-03-14

来自以下来源:hibernate事务。

有人写道,典型的事务应该使用以下习惯用法:

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

我的问题是,如果tx对象进入catch块,即出现任何异常,它会有什么,这是tx.commit()的结果吗??如果是,那么如何,因为它不返回任何值。我的意思是问tx的值在何时何地变化,变化到什么程度?

问题2)是否有必要在只读事务的情况下开始transacion,即选择查询。

共有1个答案

麹浩瀚
2023-03-14

> < li>

如果异常发生在:

tx=sess.beginTransaction();

然后 tx 将为空,因此不会发生任何事情。

如果在tx赋值后抛出异常,那么tx代表一个数据库事务钩子。您应该总是在异常时回滚事务,因为有些数据库驱动程序可能不会自动回滚事务。

是的,您也应该将事务用于只读查询。

 类似资料:
  • 问题内容: 多年来,我一直无法获得以下问题的正确答案:为什么某些开发人员反对受检查的异常?我进行了无数对话,阅读了博客上的东西,阅读了布鲁斯·埃克尔(Bruce Eckel)所说的话(我看到的第一个反对他们的人)。 我目前正在编写一些新代码,并非常注意我如何处理异常。我试图看到“我们不喜欢检查的异常”人群的观点,但我仍然看不到它。 我的每一次对话都以相同的问题为结尾而结束…让我进行设置: 一般而言

  • 问题内容: 当我的程序运行引发异常的行时,是否可以启动IPython Shell或提示? 我对引发异常的上下文,变量,作用域(和子作用域)最感兴趣。类似于Visual Studio的调试,当引发异常但未被任何人捕获时,Visual Studio将停止并为我提供调用堆栈和每个级别存在的变量。 您是否认为有办法使用IPython获得类似的东西? 编辑:启动IPython时,该选项似乎并没有达到我想要的

  • 问题内容: 在Java中,我们使用try catch块处理异常。我知道我可以像下面这样编写一个try catch块来捕获方法中抛出的任何异常。 但是Java中有什么方法可以让我在发生异常时获取一种称为的特定方法,而不是像上面的方法那样编写一个包罗万象的方法? 具体来说,当抛出异常(我的应用程序逻辑未处理)时,我想在Swing应用程序中显示一条用户友好的消息。 谢谢。 问题答案: 默认情况下,JVM

  • 我一直在试图确定如何检测点异常给定窗口异常。 更详细地说,我知道每个30天窗口是否包含异常。例如,窗口1从2009年1月1日开始,窗口2从2009年1月2日开始,依此类推。 现在我正试图利用这些知识来确定这些异常发生的日期。如果我在2009年5月1日至2009年8月1日期间出现异常,我的窗口将从2009年1月8日最后一天的窗口发出窗口信号,从2009年5日开始。 我只是不明白如何使用窗口找到出现异

  • 问题内容: 我有一种方法可以做很多事情。其中包括进行大量插入和更新。因此宣布… 它的工作完全符合预期,我对此没有任何问题。但是在某些情况下,尽管没有异常,但我还是想强制回滚…目前,当我遇到合适的条件时,我正在强制异常,但这很丑陋,我不喜欢它。 我可以以某种方式积极地调用回滚吗?异常调用它…我在想也许我也可以。 问题答案: 在Spring Transactions中,您使用。 您在这里遇到的问题是您

  • //类B扩展类并添加一个附加变量 //这是主类 在不使用铸造的情况下如何设计解决上述问题?很抱歉问了这个低级的问题(我是java新手)。