ecpipse+Tomcat+Hibernate搭建的项目,有个不解的地方,比如我数据库有两张表一个A表和B表,B引用A的ID做外键。然后再servlet里我封装了A表的数据到实体类,但是我用了延迟加载,B表的数据并没有被加载到A表的实体类中。
但是跳转到的页面里即用到A表数据,也用到B表的数据,但是这个时候response已经响应结束了,它是怎么再次回去拿数据再次返回来的(或许这里我有误区,百度了一天也没太搞清楚response到低是如何响应到客户端的,说的有错求大神纠正),因为在代码并没有写啊,到低是容器自己做了这一件事,还是response是我想象中的(猜的,因为我真的没彻底理解他到低是如何响应到客户端的)动态响应-即所谓的一次响应其实是分成多次通信进行的,响应完成一行返回一个代码到服务器,直至响应完整个页面然后结束。如果response的原理真的是这样的,那我就能理解了。只讨论这个场景,最多延伸到HTTP通信,太深我也看不懂,Hibernate session关闭的问题暂不考虑,已经用过滤器解决了,现在是想理解他的机制,求助各路好汉,跪谢。

解决方案 »

  1.   

    1、首先不会分多次响应,响应只有一次。(看LZ描述只是个简单的查询)。
    2、延迟加载,只用来缓解数据处理的压力,但是在响应前(response),一定是全部加载完才是一次完整的http请求。
      

  2.   

    那问题是在还没有跳转页面之前,response是怎么知道我里面用到了B表的数据,提前封装好然后发送到客户端的
      

  3.   


    1、建议先看hibernate的工作原理,延迟加载,实体映射,都在hibernate处理范畴。
    2、response属于tomcat的工作范畴,它只负责把结果反馈到客户端(浏览器)。
      

  4.   


    1、建议先看hibernate的工作原理,延迟加载,实体映射,都在hibernate处理范畴。
    2、response属于tomcat的工作范畴,它只负责把结果反馈到客户端(浏览器)。额,通了老铁,response在发送响应的时候一定是把整个页面封装好发送过来的,在发送响应之前已经调用到b表数据了,这个时候就已经加载了B表。并不是像我理解的那样,我钻牛角尖了
      

  5.   

    延迟加载,一旦使用了其中的数据,就加载了。你生成response时候,使用B的数据,对response的数据赋值时,B就加载了