首页 > 其他 > 详细

HQL语句中的join fetch

时间:2016-05-10 16:38:43      阅读:310      评论:0      收藏:0      [点我收藏+]

from Paper as paper join fetch paper.authors as authors where authors.id=‘xxxx‘;

from Paper as paper join fetch paper.authors where paper.authors.id=‘xxxx‘;

这两个语句有什么区别呢?通过最终生成的sql发现。

上面HQL生成最终sql(部分) from s_paper paper inner join s_paper_author author where author.paper_id=paper.id where author.id=‘xxx‘

下面HQL生成最终sql(部分) from s_paper paper inner join s_paper_author author where author.paper_id=paper.id,s_paper_author author1 where author1.paper_id=paper.id and author1.id=‘xxx‘

可以看出来,下面的多了一个关联。那么问题来了,这两个有什么区别呢?

通过测试发现,第一个sql最终查询的结果,如果论文作者有多个,加上子表的查询条件后,最终封装到实体类里面的却只有符合条件的一个子类(论文作者),但是少了一个关联查询,可以节省部分性能。

第二个sql最终查询的结果,是无论有多少个作者,全部都封装进来了。但是因为多关联了一次表查询,有部分性能损失。

综上,可以根据具体的场景来选择合适的关联方式。

HQL语句中的join fetch

原文:http://www.cnblogs.com/anlove0328-1121/p/5478285.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!