Hibernate中延迟加载介绍

2025-05-14 04:54:38

1、Hibernate中使用延迟加载的有三个方法:session.load(),query.iterate()以及关联映射,以下以session.load()方法来简单说明延迟加载。

2、首先,以IDEA开发工具自动生成的main方法进行改造。添加session.load()方法运行,此时控制台没有sql输出,证明并没有去查询数据库。

Hibernate中延迟加载介绍

3、使用返回对象,输出其中的属性值。此时控制台输出了sql,证明在使用返回对象的时候,Hibernate才会去查询数据库。

Hibernate中延迟加载介绍

4、延迟加载的原理:在使用load方法时,Hibernate返回对象是CGLIB动态生成的类型,代理对象会重写get方法,其中加入判断是否加载。其大致结构如下

Hibernate中延迟加载介绍

5、使用Hibernate的延迟加载方法,必须要注意一些问题,因为Hibernate操作都是靠ses衡痕贤伎sion进行的,延迟加载的特性需要在使用对象之前,session不能被关闭。解决办法有以下两种。

Hibernate中延迟加载介绍

6、由于在项目中dao只负责查询数据,使用数据是在JSP中解析出来,如果在dao中就把session关闭,那么jsp就无法解析数据,因此在项目中为了解决这一问题,可以在视图层保持session的开启状态,又叫open session in view,在不同的运用场景,有不同的方法。

Hibernate中延迟加载介绍

7、以spring为例,在web.xml中需要加入过滤器配置。

Hibernate中延迟加载介绍
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢