有一个是说懒加载。但是懒加载只是延迟N的加载,实际上最后还是N+1。这有区别吗?另一个方法是直接写left join,这时如果一个实体有多个一对多的属性,是不是要把所有一对多都要left join写明吧。

解决方案 »

  1.   

    懒加载是为了减少数据库的读取,如果你没明确取N,它是不会从数据库中读出来的。如果你个一对多的实体,有时候只取一,有时候又要取多,那你就用懒加载,要取多的那里用join fetch
      

  2.   

    把它设成懒加载就行了,别设成EAGER就行了,原因是当你加载一条数据的话他是饥渴的,所有会加载另一条数据,当然另一条数据有连接另一张表,如此 重复,便出现了n+1的这个规律
      

  3.   

    用 Fetch Joins ,就可解决n+1问题