Hibernate中延迟加载介绍
1、Hibernate中使用延迟加载的有三个方法:session.load(),query.iterate()以及关联映射,以下以session.load()方法来简单说明延迟加载。
2、首先,以IDEA开发工具自动生成的main方法进行改造。添加session.load()方法运行,此时控制台没有sql输出,证明并没有去查询数据库。
3、使用返回对象,输出其中的属性值。此时控制台输出了sql,证明在使用返回对象的时候,Hibernate才会去查询数据库。
4、延迟加载的原理:在使用load方法时,Hibernate返回对象是CGLIB动态生成的类型,代理对象会重写get方法,其中加入判断是否加载。其大致结构如下
5、使用Hibernate的延迟加载方法,必须要注意一些问题,因为Hibernate操作都是靠ses衡痕贤伎sion进行的,延迟加载的特性需要在使用对象之前,session不能被关闭。解决办法有以下两种。
6、由于在项目中dao只负责查询数据,使用数据是在JSP中解析出来,如果在dao中就把session关闭,那么jsp就无法解析数据,因此在项目中为了解决这一问题,可以在视图层保持session的开启状态,又叫open session in view,在不同的运用场景,有不同的方法。
7、以spring为例,在web.xml中需要加入过滤器配置。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:63
阅读量:47
阅读量:27
阅读量:76
阅读量:37