首页 > 代码库 > hibernate n+1问题
hibernate n+1问题
面试经常被问到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问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。