当我们在hibernate中可以通过session做事务时,HibernateTransactionManager
在Spring-hibernate
集成中又需要什么?
它的作用是什么?
为什么没有这个我们就不能直接进行交易呢?
当我们在hibernate中可以通过session做事务时,HibernateTransactionManager
在Spring-hibernate
集成中又需要什么?
它的作用是什么?
为什么没有这个我们就不能直接进行交易呢?
多亏了 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 文档中有很好的描述。