Find()方法下FetchType.LAZY、FetchType.EAGER、@Fetch(FetchMode.JOIN)的区别
结论:
- 1.使用例如:@ManyToOne(fetch=FetchType.LAZY)将会产生N+1的问题。
- 2.使用:@ManyToOne(fetch=FetchType.EAGER)将会使用join查询,推断hibernate对eaer进行了优化并不会产生N+1的问题。
- 3.使用:@Fetch(FetchMode.JOIN)将和第2项描述的执行效果和步骤是一样的,都是使用joinLazyandfetchoptionsequivalent是正确的。完全等价。hibernate重载了EJG的Fetch注解