hibernate n+1问题

原创 2013年12月04日 10:51:52

1+N问题也可以叫N+1问题,什么是1+N问题呢?

如果在一个对象里关联另一个对象,并且fetch = FetchType.EAGER。
比如说ManyToOne(OneToMany也存在这种问题)关联,本来只需要取Many里的对象属性,可是Many里关联的对象都会单独再发一条语句取关联对象的属性。
本来只用发一条就可以查出Many里的对象属性,可是它发了一条语句后,再发N条语句取关联对象的数据。

解决办法:
1、fetch = FetchType.LAZY:在合适的时候才发出语句(按需要发语句)。
2、BatchSize:在One对象设置Size后,取出Many里的数据后,再发N/Size条语句取关联对象的数据,从而达到少发语句的目的。
3、Join Fetch:将Many与One做外连接,因此只要发一条语句就可以查出Many与其相关联的One对象数据,Criteria默认就是这种做法。如何选择解决办法:
如果只要用Many里的对象,不用关联对象的属性,那就用方法1解决;
如果要Many里的对象属性,也想要关联的对象属性就用方法3解决。
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

hibernate之关于1+N的问题

【Hibernate】之关于1+N的问题 1+N问题,也有人也叫做N+1问题,至今未统一,在这里我会告诉大家我为什么称之为1+N问题! 什么情况下会产生1+N问题?

hibernate中的1+N问题

Hibernate n+1问题  在Session的缓存中存放的是相互关联的对象图。默认情况下,当Hibernate从数据库中加载Customer对象时,会同时加载所有关联的 Order对象。以Cus...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Hibernate的n+1问题

1、在利用Hibernate操作数据库的时候,如果在实体类上设置了表的双向关联.这可能会出现Hibernate N+1的问题.         1.1、一对多:              ...

Hibernate N+1问题

Hibernate N+1问题 在Session的缓存中存放的是相互关联的对象图。默认情况下,当Hibernate从数据库中加载Customer对象时,会同时加载所有关联的 Order对象。...

Hibernate之综合问题

n + 1问题 query.iterate()方式返回迭代查询会开始发出一条语句:查询所有记录ID语句      Hibernate: select student0_.id ascol_0_0_fr...

Hibernate 里面的1+N问题

Hibernate之1+N问题 1、 Category类 package com.edu.hpu; import javax.persistence.Entity; import javax...

Hibernate n+1问题

Hibernate n+1问题 在Session的缓存中存放的是相互关联的对象图。默认情况下,当Hibernate从数据库中加载Customer对象时,会同时加载所有关联的 Order对象。...

hibernate n+1问题

在Session的缓存中存放的是相互关联的对象图。默认情况下,当Hibernate从数据库中加载Customer对象时,会同时加载所有关联的 Order对象。以Customer和Order类为例,假定...

hibernate N+1问题

什么时候会遇到1+N的问题?前提:hibernate默认表与表的关联方法是fetch=”select”,不是fetch=”join”,这都是为了懒加载而准备的。1)一对多() ,在1的这方,通过1条s...

Hibernate n+1问题

发现这篇文章,讲n+1问题,讲得简洁易懂,故转载之。 n+1问题,貌似大家都懂,但是如何发现,如何避免是关键。 在Session的缓存中存放的是相互关联的对象图。默认情况下,当Hibe...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)