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级别的,需要载入插件和配置。