0

我对这个 Hibernate 示例有疑问。我没有在 Hibernate docs 或 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();
}

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

4

1 回答 1

1

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

这取决于异常是什么。

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

未指定。人们希望数据库能够恢复到与事务开始相对应的点。但是,在某些情况下,即使这样也可能是不可能的;例如,如果您丢失了一个磁盘驱动器,并且您没有热备用。

我该如何处理这个异常?

一般来说,你不能。如果您遇到异常并且不知道它的含义或导致它的原因,那么(在典型的数据库应用程序中)您可以做的唯一明智的事情就是关闭应用程序并让人员调查问题。

于 2013-10-09T08:30:56.447 回答