A(1:N)B(N:N)C(N:N)D(N:N)E(N:1)FA B C D E F表示6个表
1:N表示1对多
N:N表示多对多
N:1表示多对1这样查询速度特别慢,如根据ID查询A的一条记录需要5秒以上,会产生几百条SQL我没有使用延迟加载,所有lazy=false
表之间都使用双向关联的请问大家有什么好办法?hibernate问题高分求助!!

解决方案 »

  1.   

    建议:1)取消双向关联;2)直接用SQL;3)用store precedure
      

  2.   

    发快了!应为:
    建议:1)取消双向关联;2)直接用SQL;3)用数据库store procedure
      

  3.   

    请问sgcl:1)2)3)是联合使用还是可选性使用?
      

  4.   


    这位是高手,呵呵。我喜欢直接写SQL,呵呵
      

  5.   

    如果关联太多的话确实还不如直接用SQL
      

  6.   

    “根据ID查询A的一条记录需要5秒以上,会产生几百条SQL”查询交给多的那边查
      

  7.   

    louzhu  你这样是属于过分的使用hibernate了,hibernate的级联使用是需要非常慎重的。
    不是有点关系就要用上去的。这样你的项目会死的很惨,要不要都取出来多大的浪费啊。个人推荐你考虑下前台的数据需求,除非紧耦合对象关系,而且往往 A出现B必须出现的情况才配置级联,而且大多使用lazy。你完全反着来。你不想在使用hibernate,倒像在测试hibernate。
    复杂查询需求一般是通过native sql来处理的。