【问题标题】:Check if transaction in hibernate successful检查休眠中的事务是否成功
【发布时间】:2014-04-23 08:59:15
【问题描述】:

我正在使用 hibernate 开发一个应用程序,并像往常一样将 Entities 保存在 hibernate 事务中。如果交易是否成功完成,我想从交易中“获取反馈”,并据此执行下一个代码。这是我用来更新实体的简单方法:

public boolean updateDepartment(Department s) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tx = HibernateUtil.getTransaction(session);
        boolean success = false;
        try 
        {
            tx.begin();
            session.update(s);
            tx.commit();
            success = true;
        } 
        catch (Exception e) 
        {
            tx.rollback();
            e.printStackTrace();
            success = false;
        }

        return success;
    }

从其他代码调用方法:

boolean b = dao.updateDepartment(d);
if(b)
{
 doStuff();
}
else
{
 showMessage("Save not usccessful. Try again");
}

我的问题是这种带有boolean 变量的方法是否是最佳方式,或者是否可以以更好的方式执行。如果我的方法没问题,如果return 语句被finally 包围会更好吗?

【问题讨论】:

    标签: java hibernate transactions try-catch


    【解决方案1】:

    session.getTransaction().wasCommitted();即使事务已提交,也会返回 false。请看一下

    wasCommitted returns false

    对我有用的是

    // close database connection  
    public boolean closeDBConnection() {  
        boolean successful = false;  
        try {  
            session.getTransaction().commit();  
            successful = true;  
        } catch (HibernateException r) {  
        //log exception here  
        } finally {  
            session.close();  
            session = null;  
        }  
        return successful;  
    }  
    

    【讨论】:

      【解决方案2】:

      我们可以使用:

      session.getTransaction().getStatus() == TransactionStatus.COMMITTED
      

      同样

      TransactionStatus.ROLLED_BACK
      

      但是只有hibernate 4

      【讨论】:

        【解决方案3】:

        您可以通过session.getTransaction().wasCommitted(); 语句确认事务是否已提交。如果 tx 已提交,则返回 TRUE。

        【讨论】:

        • 这个方法已经不存在了
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多