手机
当前位置:查字典教程网 >编程开发 >Java >java程序中的延时加载异常及解决方案
java程序中的延时加载异常及解决方案
摘要:所谓延时加载就是懒加载(lazy),延迟加载。什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载。至于为什么要用懒加载呢,就是当我们要...

所谓延时加载就是懒加载(lazy),延迟加载。

什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载。

至于为什么要用懒加载呢,就是当我们要访问的数据量过大时,明显用缓存不太合适,因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,

我们让数据在需要的时候才进行加载,这时我们就用到了懒加载。懒加载的异常有很多种,你指的是不是session已经关闭的异常?因为那个初学者最容易遇到情况是当你加载出一个一对多关系的一这端的对象,然后在出了事务之后的地方,比如页面上,还想再获取多端对象里面的除了id以外的属性的时候,就会跑出这个异常。

我举个例子,你有一个 Grade 对象关联了 很多 Student 对象,并且用的是懒加载

你在service里面通过数据库查询获得了一个 Grade对象,这个对象里面有一个Set<Student> students 集合,但是你并没有对这个对象做进一步的处理(比如 intialize之类的操作让懒加载的代理对象真正去实例化)

然后你到了页面的展示的时候,去遍历 students 这个集合,并且你试图在页面上显示每个 student 的 name 属性(这个属性不是studentId) 这个时候就会抛出session已经关闭的异常

在SSH框架中:

可直接可以使用OpenSessionInViewFilter

在配置文件中配置

复制代码 代码如下:

<filter-name>opensession</filter-name>

<filter-class> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter

</filter-class>

<filter-mapping>

<filter-name>opensession</filter-name>

<url-pattern>*.action</url-pattern>

</filter-mapping>

以上就是本文的全部内容了,希望小伙伴们能够喜欢。

【java程序中的延时加载异常及解决方案】相关文章:

java 页面url传值中文乱码的解决方法

java执行bat命令碰到的阻塞问题的解决方法

java中的key接口解析

JDBC 程序的常见错误及调试方法

Java线程关闭的3种方法

java中 spring 定时任务 实现代码

java连接mysql数据库乱码的解决方法

java中删除数组中重复元素方法探讨

关于java 图形验证码的解决方法

java中的正则操作方法总结

精品推荐
分类导航