本人博客系统里用hibernate做了一对多的查询,post为主表,comment为附表。
我做的通过分类查询post列表,结果点了三次左右系统响应不了请求了
①我的映射文件都用了lazy=false
②我的查询数据量比较小,一个分类查询得到的5条post,一条post对应6条commemnt左右,查询三次就没有响应了
③myEclise6 + tomcat+mySql 5.0   开发环境
④页面上分类列表是在页面上<jsp:include page="/XX.do"/>这种方式处理的,页面框架用的sitemesh
请问我要从哪方面着手排错?

解决方案 »

  1.   

    不响应?报错没?
    看看是不是数据库连接的问题。
    mysql可用连接多少?连接池又设的多大?
      

  2.   

    你好,我将sitemesh取消后,性能会好一些,我在相应的页面里使用了<jsp:include page="/XX.do"/>生成list
    我想可能有可能是同时请求的hibernate操作过多,或是多个页面有逻辑错误我调用 副页面的语句: <page:apply-decorator name="footer"></page:apply-decorator>
      

  3.   

    网上也有 siteMesh 与 jsp:include 冲突的情况,和我现象差不多,也没有解决方法
      

  4.   

    查询的时候都做了些什么.. 所有的都是LAZYFALSE?..你这个POST跟其他的东西有关联么?多的那一方我觉得还是手查比较好..
      

  5.   

    sitemesh 没用过啊。既然有冲突,那就去掉,看看性能怎么样。像上面得那种数据量得两表联查,hib还是比较快得。
      

  6.   

    post与comment做了关联,一对多
      

  7.   


    sitemesh去掉以后,性能好很多,应该是数据库同时查询的数据量降低了,因为,没有用sitemesh以后,一次查询数据的条数少了很多,
      

  8.   

    主要有两个问题:①是查询主表时,自己查询子表的数据,查询量大   ②用sitemesh以后,副页的jsp:include里面的数据库查询非常频繁,导致性能变低不知道能不能实现,在action里面控制PO是否延迟加载?
    针对②,我去掉sitemesh以后,单个页面的使用,性能还是比较正常,难道我一直把list放在session里面吗?这样项目大了可能不是太好
      

  9.   


    控制延迟加载的话 首先延迟加载的属性必须设置为TRUE 然后通过某个方法在查询出来的时候根据是否延迟加载而使用那个属性(使用了也就不延迟加载了....)不明白你为什么要把List放到SESSION中 我还是建议 不用一对多的方法查询数据 可以单查嘛.. 既然是两个页面 那就查两次好了 为什么非得用SESSION呢?