Hibernate是如何延迟加载的
(1)首先介绍一下延迟加载的几种情况:
当调用Session上的load()方法加载实体时,就会采用延迟加载
当Session加载某个实体时,会对这个实体中的集合属性值采用延迟加载
当Session加载某个实体时,会对这个实体所单端关联(one-to-one,many-to-one)的另一个实体对象采用延迟加载
总结一句话延迟加载就是分为类的延迟加载和集合的延迟加载,即类的延迟加载包括用load()方法加载实体和加载实体所单向关联的另一个实体的对象
(2)延迟加载的过程:
Hibernate从数据库获取某一个对象数据、获取某一个对象的集合属性时,获取某一个对象所关联的另一个对象时,由于没有使用该对象的数据,hibernate并不从数据库加载真正的数据。而是为该对象创建一个代理对象来代表这个对象,这个对象上的所有属性都为默认值,只有在真正的需要该对象的数据时才创建这个真实的对象,真正的从数据库中加载数据。
注:如果访问的是对象标识符属性,没有必要初始化代理
(3)延迟加载的使用
因为在类加载和集合加载的时候都会遇到懒加载的问题,当我们在查询的时候不需要懒加载,因为通过懒加载不能查到是情况下,可以在class类标签或者是set集合的标签中设置lazy=false,表示立即加载,而true表示懒加载。
本文原文地址:https://blog.csdn.net/znoone/article/details/79077132