我是一个初学者. 我建了一个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来解决这个问题. 希望对你有所帮助!