hehe198504
葛一凡
2012-08-28 10:51

请教一个hibernate和spring整合时的问题

已采纳

在整合的过程中,发现一个问题,session并没有关闭。以下是说明:
[code="java"]protected Session getSession() {
return this.sessionFactory.getCurrentSession();
}[/code]
这是获取session的方法
code="java"this.getSession().get(this.clazz, id)[/code]
这是获取对象的方法
事务在配置文件中进行配置:
[code="java"] class="org.springframework.orm.hibernate4.HibernateTransactionManager">

[/code]
正常的情况来说,获取对象后,session就应该关闭了,可是在后面的测试中发现sesion并没有关闭,仍然可以查询出关联对象。网上说这种session不用手动关闭,请问它何时关闭

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • jinnianshilongnian jinnianshilongnian 9年前

    建议看下spring容器事务管理,,事务关闭由容器负责

    [url]http://jinnianshilongnian.iteye.com/blog/1442376[/url]

    [url]http://jinnianshilongnian.iteye.com/blog/1441271[/url] 可以参考这个里边的事务传播图

    点赞 评论 复制链接分享
  • kic123 kic123 9年前

    你把几个概念混淆了。Hibernate和Spring整合之后推荐使用HibernateTemplate这个模板类,它里面封装了Hibernate的Session和相关事务的控制,是不需要我们手动的开关Session的。但是,你的代码里面仍然使用的是Hibernate API中的原始Session(sessionFactory.getCurrentSession()这个语句),这就相当于你用的还是原始的Hibernate,跟整合Spring之前没有一点差别,所以Session的开关还需自己手动控制。希望可以帮到你....

    点赞 3 评论 复制链接分享
  • lbinzhang lbinzhang 9年前

    不错,好着

    点赞 评论 复制链接分享
  • me_aaaaaa me_aaaaaa 9年前

    这个要手动关的!

    点赞 评论 复制链接分享
  • navy0168 navy0168 9年前

    return this.sessionFactory.getCurrentSession(); 这种形式 session 是会自己关闭的 ,它是需要 事务的配合 ,事务 commit之后 session 就关闭了

    [url]http://navylee.iteye.com/blog/1628280[/url]

    点赞 评论 复制链接分享