少年阿宾

那些青春的岁月

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
我是一个初学者. 
我建了一个classes表和一个students表,表示班级和学生,其中学生里面有一个外键关联到班级表. 
然后学生类里面建了一个classes的属性, 
用session取出学生后,如果关闭session的话,就无法读取到学生类里的classes值,没有关闭就能读取到. 
请问这个session会不会影响到其他用户的访问呢? 
就是说如果有两个用户并行操作数据库的话,一个用户的session不关闭影不影响另一个用户呢?







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

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

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

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

引用
一个用户的session不关闭影不影响另一个用户

因为session由spring来管理,很安全,不会出现这个种并发问题. 

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

希望对你有所帮助!



posted on 2013-04-19 21:28 abin 阅读(584) 评论(0)  编辑  收藏 所属分类: hibernate

只有注册用户登录后才能发表评论。


网站导航: