hibernate基础(十):延迟加载(懒加载)
1.懒加载的作用:提高效率
2.类的懒加载
(1).使用:lazy属性设置为true才行
<hibernate-mapping>
<class name="com.domain.user" table="user" lazy="true">
...
</class>
</hibernate-mapping>
(2).类的懒加载只针对普通属性有效
(3).session.load()和session.get()区别:(实质就是懒加载的区别)
^1.get()一旦调用就去查询,并且返回的是实体对象。load()是在访问非ID字段时才去查询,并且返回的是代理对象。因为load()是访问时才查询的,而查询需要依靠session对象,所以当session关闭的情况下,会抛出LazyInitializationException
^2.get()查不到会抛NullPointerException,load()会抛ObjectNotFoundException
3.集合的懒加载
(1).集合默认就是懒加载的
(2).当通过一个对象加载关联的集合时,是懒加载。
如果把集合的懒加载的懒加载变成false,则在获取classes时就将集合加载了
(3).集合的懒加载除了true和false,还有extra:
当使用聚合函数(count,max,min,avg)时,此时不需要加载整个集合的值就可以得到
4.单端关联的懒加载:让多的一方加载一的一方
many-to-one中lazy的值可以是false,proxy,no-proxy。后两者相当于true
5.当报no-session的错误时,实质是数据还没加载出来,session关闭了
6.懒加载的原理:通过改变sql发出的时间实现懒加载
上一篇: python绘制地图
下一篇: MyBatis中延迟加载