我正在使用 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。请看一下
对我有用的是
// 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/