当我们可以通过会话在休眠中执行事务时,HibernateTransactionManager
在Spring-hibernate
集成中需要再次需要什么?
它的作用是什么?
为什么我们不能直接进行交易呢?
答案 0 :(得分:13)
由于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 documentation中有详细描述。