java - 检查hibernate中的事务是否成功

标签 java hibernate transactions try-catch

我正在使用 hibernate 开发应用程序,并且像往常一样在 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 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;  
}  

关于java - 检查hibernate中的事务是否成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23239474/

相关文章:

java - 在哪里可以下载 JDK 1.6u20 64 位?

java - 在 Java EE 应用程序之间进行同步调用的最佳方式

hibernate - 如何使用 hibernate Envers触发实体onLoad()?

java - Springboot 1.4/单元测试时出错(hibernate AttributeConverter 注册多次)

MySQL : start Transaction if a condition was true

c# - 如何在可取消的异步/等待中处理 TransactionScope?

java - 声明数组增量元素的快速方法 - Java

java - 具有动态参数数量的通用类

java - 如何在 Spring Boot 中将 hibernate.id.db_struct_naming_strategy 设置为旧版?

mysql - 经理级 SQL 事务