事务回滚的异常

时间:2013-10-09 07:58:21

标签: java hibernate jdbc transactions

我对这个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();
}

我的问题是如果事务回滚方法抛出异常将会发生什么?某些交易数据会存储在数据库中吗?我该如何处理这个例外?

1 个答案:

答案 0 :(得分:1)

  

我的问题是如果事务回滚方法抛出异常将会发生什么?

这取决于异常是什么。

  

某些交易数据会存储在数据库中吗?

未指定。一个人希望数据库将能够恢复到与事务的 start 相对应的点。但是,有些情况甚至可能无法实现;例如如果您丢失了光盘驱动器,并且没有热备用。

  

如何处理此异常?

一般情况下,你不能。如果你得到一个例外,并且不知道它意味着什么或是什么导致它,你可以做的唯一明智的事情(在典型的数据库应用程序中)是关闭应用程序并让人类调查问题。