为什么在 Spring 中需要 HIbernateTransactionManager



当我们可以通过会话在休眠中执行事务时,在Spring-hibernate集成中再次HibernateTransactionManager需要什么?

它的作用是什么?

为什么我们不能在没有这个的情况下直接进行交易?

由于AOP,Spring允许做的是使用声明式事务,就像你可以对EJB所做的那样。

而不是做

public void doSomething() {
    Session sess = factory.openSession();
    Transaction tx = null;
    try {
        tx = sess.beginTransaction();
        // do some work
        ...
        tx.commit();
    }
    catch (RuntimeException e) {
        if (tx != null) tx.rollback();
        throw e; // or display error message
    }
    finally {
        sess.close();
    }
}

你只需做

@Transactional
public void doSomething() {
    // do some work
}

这更具可读性,更易于维护,更不繁琐,并且更安全,因为Spring为您处理事务逻辑。这就是为什么需要一个事务管理器:告诉Spring它应该如何为你处理交易。因为它也可以使用相同的声明式模型,但使用 JPA 事务或 JTA 事务。

这在 Spring 文档中有很好的描述。

相关内容

  • 没有找到相关文章

最新更新