懒加懒加载问题的解决方案

简介: 懒加载问题的解决方案

   在做项目的时候,一不小心就碰到懒加载的问题,今天做个总结(springdata-jpa):


/

Exception occurred during processing request: org.hibernate.LazyInitializationException: 
    failed to lazily initialize a collection of role: cn.itcast.bos.domain.base.Courier.fixedAreas,
    could not initialize proxy - no Session
    org.apache.struts2.json.JSONException: org.hibernate.LazyInitializationException: 
    failed to lazily initialize a collection of role: cn.itcast.bos.domain.base.Courier.fixedAreas, 
    could not initialize proxy - no Session

     

   第一种解决方案(不想要关联的集合对象):在getFixedAreas方法上加上

@JSON(serialize = false)
        @JSON(serialize = false)
    public Set<FixedArea> getFixedAreas() {
        return fixedAreas;
    }

   只要加上了@JSON(serialize = false),返回的数据格式里不会含有fixedAreas字段及数据,

   可以理解为过滤掉了fixedAreas数据

 

   第二种解决方案(想要关联的集合对象):在web.xml中配置,延长EntityManager的生命周期,类似Hibernate里面延长Sesseion的生命周期

 

<filter>
        <filter-name>OpenEntityManagerInView</filter-name>
        <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>OpenEntityManagerInView</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

   第三种解决方案(想要关联的集合对象):不配置OpenEntityManagerInViewFilter,不配置@JSON(serialize = false),设置为立即加载

   @ManyToMany(mappedBy = "couriers",fetch=FetchType.EAGER)

   private Set<FixedArea> fixedAreas = new HashSet<>();

   此时,返回的数据格式里有fixedAreas字段及数据

   获取A对象时,A对象关联B对象,FetchType默认是立即加载

   获取A对象时,A对象关联B对象的集合,FetchType默认是懒加载

 

   总结:不管是Hibernate还是JPA,有加载策略的问题,都是基于性能的考虑


相关文章
|
6月前
|
JavaScript
在实现路由懒加载和按需加载时,有哪些常用的工具和库可以帮助我们?
在实现路由懒加载和按需加载时,有哪些常用的工具和库可以帮助我们?
29 1
|
2月前
|
API 开发者
懒加载的实现
懒加载的实现
187 57
|
3月前
|
前端开发 UED 开发者
React.lazy()与Suspense:实现按需加载的动态组件——深入理解代码分割、提升首屏速度和优化用户体验的关键技术
【8月更文挑战第31天】在现代Web应用中,性能优化至关重要,特别是减少首屏加载时间和提升用户交互体验。React.lazy()和Suspense组件提供了一种优雅的解决方案,允许按需加载组件,仅在需要渲染时加载相应代码块,从而加快页面展示速度。Suspense组件在组件加载期间显示备选内容,确保了平滑的加载过渡。
136 0
|
3月前
|
JavaScript API
如何实现图片懒加载
如何实现图片懒加载
72 0
|
6月前
|
前端开发 算法 JavaScript
如何优化前端性能:探索图片压缩与延迟加载技术
本文深入探讨了前端性能优化中的关键问题:图片压缩与延迟加载技术。通过介绍图片压缩的原理和方法,并结合实例说明了如何有效减少图片大小、提升加载速度;同时,详细解析了延迟加载技术的实现原理及其在提高页面加载性能中的作用,为前端开发者提供了实用的优化方案。
|
6月前
|
JavaScript 前端开发
如何实现网页的懒加载?图片懒加载的原理
如何实现网页的懒加载?图片懒加载的原理
48 0
|
6月前
|
前端开发 JavaScript API
|
6月前
|
缓存 前端开发 JavaScript
加速你的网站:一文看懂预加载和懒加载
加速你的网站:一文看懂预加载和懒加载
|
编解码 前端开发 UED
响应式图片加载和优化策略
响应式图片加载和优化策略
160 0