leonaf100 2008-11-14 13:21
浏览 546
已采纳

请问hibernate中session应该什么时候关闭

我是一个初学者.

我建了一个classes表和一个students表,表示班级和学生,其中学生里面有一个外键关联到班级表.

然后学生类里面建了一个classes的属性,

用session取出学生后,如果关闭session的话,就无法读取到学生类里的classes值,没有关闭就能读取到.

请问这个session会不会影响到其他用户的访问呢?

就是说如果有两个用户并行操作数据库的话,一个用户的session不关闭影不影响另一个用户呢?

  • 写回答

4条回答 默认 最新

  • 码农戏码 2008-11-14 14:08
    关注

    J2EE中最大的一个观念就是分层..

    session是持久层的东东.不可窜到别的层..

    你的这个问题其实就是延迟加载的问题.

    从理论的角度讲,最好是用一个就关一个.防止资源消耗.
    但由于hibernate中的延迟加载,所以出现了你的关闭session的话,就无法读取到学生类里的classes值问题.
    这个问题可以用Hibernate.initialize()来解决.也可就使用opensessionview的方式.spring中提供了这样的filter
    不知道这在使用中有没有使用spring.用了就比较方便,也不会出现你所说的
    [quote]一个用户的session不关闭影不影响另一个用户[/quote]
    因为session由spring来管理,很安全,不会出现这个种并发问题.

    如果只是使用了Hibernate的话,那得注意了.你在servlet中直接创建session就可能出现并发问题,因为session不是线程安全的,而servlet是多线程的.
    这时可以使用ThreadLocal来解决这个问题.

    希望对你有所帮助!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题