`
javahigh1
  • 浏览: 1225699 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Join取代不了Fetch,Fetch的独到之处在于打通了对象间的关联关系

 
阅读更多

确认一个问题:

1.通过Join获得的集合,即使是集合的全体,在通过它的宿主对象访问这个集合时,还是会重新生成SQL来加载这个集合?

验证结果:的确如此。看来Hibernate还没有如此智能。这个问题也从侧面解释了join和fetch的不同:join可以有 过滤 条件,不一定会将关联对象全部取出。但是fetch总是是将关联对象全部取出的。经过join加载出的对象应被视为独立的个体,hibernate不会设定它与已存在对象间的关系。这就是为什么通过join取得的集合, 在通过它的宿主对象访 问这个集合时,还是会重新生成SQL来加载这个集合的原因。但是通过fetch取得的对象就不同了。fetch出来的对象都已经设定了它们之间的关联关系,可以自由导航而不会生成任何sql重新查询!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics