当 出现上诉异常时多半是因为service层得到的对象关联到多个对象,而在service层中未将其余对象实例化。如一个班级有多个学生,在service层中只将班级查出来。问题的出现是在显示层中迭代调用班级中的学生的时候就会报org.hibernate.LazyInitializationException,因为此时session已经关闭,而还会用到学生的代理对象。解决办法有两种:一是用OpenSessionInViewFilter(需要注意将它配置在struts2的过滤器之前);方法二是在service层中将student对象也实例化。

  第一种方法是简单易做到,但是却大大影响效率。第二种放法碰到关联对象较多时会比较麻烦。

  下面是OpenSessionInViewFilter 的工作原理介绍:

  Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行。如果 Service 层返回一个启用了延迟加载功能的领域对象给 Web 层,当 Web 层访问到那些需要延迟加载的数据时,由于加载领域对象的 Hibernate Session 已经关闭,这些导致延迟加载数据的访问异常。而Spring为我们提供的OpenSessionInViewFilter过滤器为我们很好的解决了这个问题。OpenSessionInViewFilter的主要功能是使每个请求过程绑定一个 Hibernate Session,即使最初的事务已经完成了,也可以在 Web 层进行延迟加载的操作。OpenSessionInViewFilter 过滤器将 Hibernate Session 绑定到请求线程中,它将自动被 Spring 的事务管理器探测到。所以 OpenSessionInViewFilter 适用于 Service 层使用HibernateTransactionManager 或 JtaTransactionManager 进行事务管理的环境,也可以用于非事务只读的数据操作中。 
request-->open session-->打开连接、开始事务-->持久操作-->渲染(关闭连接、session)-->response 其中一些过程省略了,不是很关心。

转载于:https://www.cnblogs.com/Jc-zhu/p/4569622.html

ssh中懒加载问题org.hibernate.LazyInitializationException相关推荐

  1. iOS开发UI中懒加载的使用方法

    1.懒加载基本 懒加载--也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其getter方法.说的通俗一点,就是在开发中,当程序中需要利用的资源时.在程序启动的时候不加载 ...

  2. Vue在路由中懒加载并创建组件,省去写页面的步骤

    需求 现在有一个公共组件,在多个端都需要使用,但传入组件的参数不同,每个端都要写个vue的页面或是component有点麻烦. <template><child blPath=&qu ...

  3. Hibernate懒加载解析

    Hibernate懒加载解析 在Hibernate框架中,当我们要访问的数据量过大时,明显用缓存不太合适, 因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,这时Hibernate用懒加载机制来 ...

  4. (10) Hibernate懒加载详解

    懒加载为hibernate中比较常用的特性之一,下面我们详细来了解下懒加载的原理和注意事项 Load()方法的懒加载原理 在Hibernate中,查询方法有两个,分别是get()和load(),这两种 ...

  5. swift懒加载(lazy load)VS OC懒加载

    为什么80%的码农都做不了架构师?>>>    懒加载可以让你不用关心变量的创建时机,等到真正使用的时候才去创建并且能保证在使用的时候已经初始化完毕,在一定程度上可以提高性能. OC ...

  6. 【angular路由】路由懒加载写法

    路由懒加载一直没明白怎么加载的,现在记录一下 要实现的功能 组件: home组件下有setting和welcome组件,默认进入home组件显示welcome组件的内容 product组件下有pcat ...

  7. java-web hibernate中的懒加载问题

    java-web hibernate中的懒加载问题 懒加载异常 1.延迟加载机制 延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作.在 ...

  8. 解决hibernate中的懒加载(延迟加载)问题

    解决hibernate中的懒加载(延迟加载)问题 我们在开发的时候经常会遇到延迟加载问题,在实体映射时,多对一和多对多中,多的一样的属性默认是lazy="true"(即,默认是延迟 ...

  9. Hibernate懒加载

    在Hibernate框架中,当我们要访问的数据量过大时,明显用缓存不太合适, 因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,这时Hibernate用懒加载机制来弥补这种缺陷,但是这只是弥补而 ...

  10. Hibernate懒加载问题的5种解决方案

    ** 1.Hibernate基础 ** Hibernate基础,传送门 ** 2.什么是Hibernate懒加载 ** 当我们查询一个对象的时候,在默认情况下,返回的只是该对象的代理对象,当用户去使用 ...

最新文章

  1. ClickHouse系列教程四:允许远程连接 allow remote access
  2. JS,中文,未结束的字符常量
  3. jQuery Datatable 实用简单实例
  4. Dom查看数据库mysql_Linux中OS系统和MySQL数据库巡检生成html
  5. QT的QTimer类的使用
  6. 提示 launch failed
  7. .NET面试题解析(02)-拆箱与装箱
  8. Jmeter 使用badyboy 录制脚本
  9. 反射 数据类型_这是一份超全面详细的Java反射机制学习指南
  10. 将pandas中Dataframe数据转换为二维数组array
  11. Strassen算法
  12. Linux虚拟文件系统之文件系统卸载(sys_umount())
  13. 计算机网络与通信之计算机网络体系结构
  14. python3:从 logging 库中摘‘零件’另造小轮子 简单日志功能
  15. 高考数学知识点:向量压轴题秒杀神器-中点转化式
  16. js Tree(梅花雪)最简单的例子(来字MEIZZ)
  17. 移动App专项性能测试(Android and iOS)
  18. 二、LoRaWAN Gateway【LoRaWAN实战项目】
  19. 4种常见的鉴权方式及说明
  20. 【Markdown】编辑器使用技巧大汇总4。集合运算符的表示($\in$ 等),箭头符号的表示($\uparrow$ 等),使用指定的字体,转义字符的输入

热门文章

  1. 关于卷积,池化,前向传播,反向传播,全连接层,通道数的一些概念
  2. 单片机霹雳灯c语言数组,单片机实训,流水灯,霹雳灯.doc
  3. c语言链表的数据结构,c语言实现通用数据结构(一):通用链表
  4. idea断点的几个意思_你真的理解Intellij IDEA的Debug技巧吗?这篇文章全部教给你...
  5. linux下tab作用的描述?
  6. 送给队友的一个汉堡包
  7. PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程以及注意事项
  8. 利用CentOS的yum更新源来实现RHEL5的YUM功能
  9. 微软4月13日发布Silverlight 4正式版
  10. 2006年,谁是我们的博客之星?