没有回滚功能,在Java中使用UserTransaction有什么意义吗?

时间:2013-12-06 09:45:14

标签: java

我正在使用javax.transaction.UserTransaction来维护我的java代码中的事务。但是在我们的代码中发现了begin()commit()的调用,并且没有调用rollback()

那么,使用这样的话有什么意义吗?

请指导我摆脱这种混乱?

2 个答案:

答案 0 :(得分:1)

您可以看到有rollback()

   UserTransaction userTransaction=new UserTransaction() {
       @Override
       public int getStatus() throws SystemException {
           return 0;  
       }

       @Override
       public void begin() throws NotSupportedException, SystemException {

       }

       @Override
       public void commit() throws RollbackException, HeuristicMixedException, HeuristicRollbackException, SecurityException, IllegalStateException, SystemException {

       }

       @Override
       public void rollback() throws IllegalStateException, SecurityException, SystemException {

       }

       @Override
       public void setRollbackOnly() throws IllegalStateException, SystemException {

       }

       @Override
       public void setTransactionTimeout(int i) throws SystemException {

       }
   } ;

RuntimeException投掷时,您可以根据需要rollback()投降。

答案 1 :(得分:1)

您的代码示例将会有很大帮助。

无论如何,一般来说,为了理解,您的代码无需包含对commit()rollback()的调用。您可能根本不需要处理自己的回滚案例。

如果线程因调用begin()和调用commit()之间的任何原因而崩溃(即在事务中期),则事务将被回滚并执行操作远在事务内部不会应用于启用事务的模块。