我对这个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();
}
我的问题是如果事务回滚方法抛出异常将会发生什么?某些交易数据会存储在数据库中吗?我该如何处理这个例外?
答案 0 :(得分:1)
我的问题是如果事务回滚方法抛出异常将会发生什么?
这取决于异常是什么。
某些交易数据会存储在数据库中吗?
未指定。一个人希望数据库将能够恢复到与事务的 start 相对应的点。但是,有些情况甚至可能无法实现;例如如果您丢失了光盘驱动器,并且没有热备用。
如何处理此异常?
一般情况下,你不能。如果你得到一个例外,并且不知道它意味着什么或是什么导致它,你可以做的唯一明智的事情(在典型的数据库应用程序中)是关闭应用程序并让人类调查问题。