哪一个更好用Hibernate Transaction或Spring Transaction?

时间:2013-08-09 10:06:26

标签: spring hibernate transactions

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

2 个答案:

答案 0 :(得分:1)

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

使用Spring处理事务。

答案 1 :(得分: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”