服务器之家

服务器之家 > 正文

java程序中的延时加载异常及解决方案

时间:2019-12-09 14:26     来源/作者:hebedich

所谓延时加载就是懒加载(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>

 

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

标签:

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
配置IIS网站web服务器的安全策略配置解决方案
配置IIS网站web服务器的安全策略配置解决方案 2019-05-23
Nginx服务器究竟是怎么执行PHP项目
Nginx服务器究竟是怎么执行PHP项目 2019-05-24
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
返回顶部