Hibernate是如何延迟加载的

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

猜你喜欢

转载自blog.csdn.net/Roger_CoderLife/article/details/85246530