我是一个初学者.
我建了一个classes表和一个students表,表示班级和学生,其中学生里面有一个外键关联到班级表.
然后学生类里面建了一个classes的属性,
用session取出学生后,如果关闭session的话,就无法读取到学生类里的classes值,没有关闭就能读取到.
请问这个session会不会影响到其他用户的访问呢?
就是说如果有两个用户并行操作数据库的话,一个用户的session不关闭影不影响另一个用户呢?
请问hibernate中session应该什么时候关闭
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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来解决这个问题.希望对你有所帮助!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报