我对这个 Hibernate 示例有疑问。我没有在 Hibernate 文档或 Manning Persistence with JPA 中找到答案。也许有人可以解释当我使用普通 JDBC 时会发生什么。
Session session = null;
Transaction tx = null;
try {
session = sessionFactory.openSession();
tx = session.beginTransaction();
// Transaction actions
tx.commit();
}
catch (RuntimeException ex) {
try {
tx.rollback();
}
catch (RuntimeException rbEx) {
log.error("Couldn’t roll back transaction", rbEx);
}
throw ex;
}
finally {
session.close();
}
我的问题是如果事务回滚方法抛出异常会发生什么?一些交易数据会存储在数据库中吗?我该如何处理这个异常?
最佳答案
My question is what will happen if transaction rollback method throw an exception?
这取决于异常(exception)是什么。
Will some transaction data be stored in database?
未指定。人们希望数据库能够恢复到与事务开始相对应的点。然而,在某些情况下,这也可能是不可能的;例如如果您丢失了光盘驱动器,并且您没有热备用。
How can I handle this exception?
一般来说,你不能。如果您遇到异常并且不知道它意味着什么或导致它的原因,那么您可以做的唯一明智的事情(在典型的数据库应用程序中)就是关闭应用程序并让人调查问题。
关于java - 事务回滚异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19266217/