0

在我的项目中,我也使用 Hibernate 以及 Spring 并且两者都可以在这里管理事务我的问题是管理应用程序中的事务会很好。

4

2 回答 2

1

Spring 允许您以声明性方式管理事务(使用 AOP,全局配置或使用@Transactional注释)。如果您不使用 JTA,您可以将其配置为委托给 Hibernate 来处理事务。

使用 Spring 处理事务。

于 2013-08-09T10:10:59.790 回答
1

Spring 本身无法启动/提交/回滚事务;他的目的是删除管理事务生命周期所需的样板代码,并将真正的启动/提交/回滚委托给持久性引擎(Hibernate、JDBC、JPA 等)。
举个例子:

Session s = sessionFactory.getCurrentSession();
Transaction tx = s.beginTransaction();
try
{
  doSomeStuff();
  tx.commit();
}
catch(HibernateException e)
{
  tx.rollback();
}
s.close();

这是在事务下执行操作的标准(样板)(使用 Hibernate,如果需要切换到 JPA,则需要重写代码)。
使用 Spring,您可以使用声明性方式(AOP、通过 XML 或使用注释)以这种方式删除标准代码:

@Transactional
public void doSomeStuff()
{
  // your code
}

例如,我使用注释并@Transactional用于替换上面的所有样板代码,并且您还有另一个功能:切换到 JPA 是透明的,因为这只是一个配置问题。这个问题真的很复杂,你的问题的答案是:
你不能“比较” Hibernate Transaction 和 Spring Transaction 因为它们是两个不同的东西;Spring Transaction 应该是“Spring transaction support”

于 2013-08-09T11:20:29.360 回答