首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring事务或Hibernate事务

Spring事务或Hibernate事务
EN

Stack Overflow用户
提问于 2015-01-27 20:09:26
回答 1查看 640关注 0票数 0

我知道我是在发表一个多余的问题。我已经在SO和其他博客中浏览过各种文章,但是我需要在更多的项目上更加清晰&所以在这里发布。

我使用Spring + Hibernate。我正在插入一些记录。

MySpringController.java

代码语言:javascript
复制
@Transactional
@RequestMapping(...)
public String saveRecords(@ModelAttribute("orderObj") Order order){
  for(Item item : order.getItems()){
    itemDAO.save(item);
  }
  return "saveSuccess";
}

MyHibernateDAO类

代码语言:javascript
复制
public void save(Item item){
  session = sf.openSession();
  Transaction tx = session.beginTransaction();
  session.persist(item);
  tx.commit();
  session.close();
}

问题:

  1. Spring和Hibernate都启用了事务。这是否良好的做法呢?还是两个组件中的事务都足够了?
  2. 在这样的批量事务处理期间,使用session.openSession()还是session.getCurrentSession()是明智的?在批量提交过程中每次打开和关闭事务是一种良好的做法吗?
  3. 现在,如果发生回滚,那么在哪个范围内呢?在Hibernate还是Spring的事务下?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-27 20:40:29

虽然事务管理的使用因应用程序而异,但根据我的经验,我可以指出一些重要的事情。

  1. 虽然spring和hibernate都提供了事务API,但我总是采用Spring声明式事务管理,因为它处理所有事情,我不需要担心回滚和提交。
  2. 最好使用session.getCurrentSession(),它将返回当前线程的会话。
  3. 如果使用Spring事务管理,则回滚将位于spring管理事务下。

您不需要同时使用Hibernate和Spring事务。

以上各点都是基于我的经验,可能会因申请要求而有所不同。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28179079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档