hibernate的N+1问题汇总 和hibernate的缓存机制

来源:互联网 发布:开淘宝用mac 编辑:程序博客网 时间:2024/06/06 05:35
1)1 对多,在1 方,查找得到了n 个对象, 那么又需要将n 个对象关联的集合取出,于是本来的一条sql查询变成了n +1 条 

2)多对1 ,在多方,查询得到了m个对象,那么也会将m个对象对应的1 方的对象取出, 也变成了m+1

3)iterater查询,先查出id,然后根据id去查各个对象;

解决方法:

1)延迟加载:lazy=ture; 默认其实也是ture;

2)使用二级缓存,第一次很慢(还是会有n+1的情况),但是以后不在产生。


hibernate缓存

1)一级缓存 是session级别的,但是session结束的时候,对象缓存就没有,是hibernate自带的功能。

2)二级缓存 是sessionfactroy级别的,需要载入插件和配置。


0 0