码迷,mamicode.com
首页 > Web开发 > 详细

hibernate n+1问题

时间:2017-03-05 00:22:01      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:对象   连接查询   还需要   etc   any   取出   n+1问题   之间   one   

面试经常被问到bibernate n+1问题。

首先我们来了解hibernate n+1问题:

类与类之间存在1对n或者n对1的关系。

1对N:当通过一条sql查询一个对象,还需要将关联集合里的对象查出。集合存在n个对象,所以需要发出n条sql.这样就发出了1+n条sql。

N对1:当通过一条sql查询到了n个对象,由于关联的存在需要将关联的一方取出,也需要发出n条sql.这样的话也发出了1+n条sql。

解决办法:

1.在<one-to-many>标签里设置lazy="true"这样的话需要关联的类在查询加载。n对1关系则再<set> 集合中设置lazy="true"

2.使用外连接查询设置在<one-to-many>或者<set>集合中设置fetch="join"

3.配置二级缓存,缓存中查询快速,解决多次查询数据库问题。

 

hibernate n+1问题

标签:对象   连接查询   还需要   etc   any   取出   n+1问题   之间   one   

原文地址:http://www.cnblogs.com/kimoyoyo21/p/6503158.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!