簡體   English   中英

檢查休眠中的事務是否成功

[英]Check if transaction in hibernate successful

我正在使用休眠模式開發應用程序,並且像往常一樣在hibernate事務中保存Entities 如果事務成功完成,我想從事務中“獲取反饋”,並據此執行下一個代碼。 這是我用來更新實體的簡單方法:

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

session.getTransaction()。wasCommitted(); 即使事務已提交,也會返回false。 請看看

wasCommitted返回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;  
}  

我們可以用:

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

相似地

TransactionStatus.ROLLED_BACK

但是只有休眠4

您可以使用session.getTransaction().wasCommitted();確認交易是否已提交session.getTransaction().wasCommitted(); 聲明。 如果提交了tx,則返回TRUE。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM