`

关于hibernate懒加载的应对方案

阅读更多

hibernate lazy load 是实用hibernate不可避免的问题,在级联关系中指向one的fetchType默认为eager,指向mangy方向fetchType默认为lazy;eager表示加载本数据的同时会自动加载级联数据,lazy表示只关心本数据。

public class Person{
private String name;
private String sex;
@ManyToOne
private Team team;
}


public class Team{
private String no;
@OneToMany
private Set<Person> members;
}

 

例,默认情况下,加载Person时除了会读取‘person’表的内容还会主动读取‘team’表的内容,加载Team时只读取‘team’表的内容。

有时候我们需要在获取team时也要team.memebers,这时有三种方案可以达到目的:

1.定义fetchType的值为eager

@OneToMany(fetch=FetchType.eager)
private Set<Person> members;
2.openSessionInView

配置OpenSessionInView这个Filter,将Hibernate session的生命周期延长直至服务器返回数据给客户端

3.HIbernate initialize

在service 层调用Hibernate的initialize方法,强制加载级联的内容(team.members)

 

方案1执行起来简单粗暴,如果级联关系比较复杂时,会一次查询引发很多次查询,会导致服务器反应过慢,影响性能;

方案2范围太广,自主控制强度小;建议使用方案3.

分享到:
评论

相关推荐

    Struts+Spring+Hibernate通用分页解决方案

    "Struts+Spring+Hibernate通用分页解决方案"是针对基于这三大框架(Struts、Spring、Hibernate)的Java Web应用所设计的一种高效且可复用的分页策略。以下是关于这个主题的详细解释: 1. **Struts框架**:Struts是...

    hibernate-5.2.10最新jar包

    分析并探讨Hibernate的缓存机制(一级缓存和二级缓存)、批处理、懒加载等优化手段,以提升应用程序的性能。 9. 注意事项与最佳实践: 提供在使用Hibernate过程中可能遇到的问题和解决方法,以及提高开发效率和...

    Hibernate源码解析(一)

    《Hibernate源码解析(一)》 在Java开发领域,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了...在后续的篇章中,我们将继续深入探讨Hibernate的其他重要概念和组件,如第二级缓存、懒加载机制等。

    Hibernate事务管理.

    然而,如果在服务层(Service layer)或数据访问层(DAO layer)关闭了Session,然后试图在应用层(如视图层)进行懒加载,Hibernate会抛出`session already closed Exception`,因为此时Session已经不再有效。...

    Hibernate开发各类项目的技术总结

    Hibernate支持EhCache和Infinispan等缓存解决方案。 2. **批处理**:批量插入和更新可以减少数据库连接的开销,提升效率。例如,使用`saveOrUpdateAll()`方法一次性处理多个对象。 3. **懒加载和立即加载**:合理...

    hibernate-4.1.9所有jar

    2. 支持懒加载和级联操作:提高性能,减少不必要的数据库访问。 3. 自动缓存机制:一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存),提高数据读取速度。 4. 支持多种数据库:包括MySQL、...

    Hibernate Recipes

    本书采用问题-解决方案的形式,提供了大量的代码示例和模板,适用于Hibernate 3.5版本。 #### 二、Hibernate框架概述 Hibernate是一个开源的对象关系映射(Object-Relational Mapping, ORM)框架,用于简化Java...

    hibernate持久化技术详解.孙卫琴.代码2

    3. **懒加载(Lazy Loading)**: Hibernate支持延迟加载,只有在真正需要时才加载关联的对象,提高性能。 4. **集合映射(Collection Mapping)**: Hibernate支持多种类型的集合映射,如`List`、`Set`、`Map`等,...

    hibernate中文技术文档

    Hibernate作为一个优秀的J2EE平台上的持久化解决方案,它极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑的实现,而无需过多关注底层数据库的细节。 1. **Hibernate简介** Hibernate是一个开源的Java库...

    hibernate-annotations-3.4.0.GA.rar

    实际应用中,开发者还需要根据项目需求灵活运用,并结合 Hibenate的其他特性,如HQL(Hibernate Query Language)、Criteria API等,构建高效稳定的持久层解决方案。通过深入了解并熟练掌握这些技术,能够帮助开发者...

    Manning.Hibernate.Quickly.Aug.2005

    Hibernate是一个开放源代码的ORM解决方案,它允许开发人员在Java应用中使用面向对象的方式来操作数据库,从而避免了繁琐的SQL操作。 该书的核心知识点包括: 1. **对象关系映射基础**:介绍了ORM的基本概念,解释...

    Jdbc 和hibernate

    - 对于大型项目,或者需要频繁与数据库交互、有复杂的关联映射时,Hibernate能提供更好的解决方案。 综上所述,JDBC和Hibernate各有优劣。JDBC适用于需要直接控制数据库操作的场景,而Hibernate则适合需要快速开发...

    HIbernate免注解实现操作数据库 及Hibernate3连接SQL的BUG解决办法

    接下来,我们讨论Hibernate 3中连接SQL的常见问题及解决方案: 1. **连接池问题**: 如果在连接数据库时遇到问题,可能是由于连接池配置不当导致的。确保正确设置了连接池的大小、超时时间等参数,并检查数据库...

    精通Hibernate图书欣赏及PDF阅读器

    此外,还会讲解如何通过批处理、懒加载、延迟加载等技术来提高Hibernate应用的性能。 压缩包中的“Foxit Reader3.0.2.091506.exe”是福昕PDF阅读器的安装程序,用于打开和阅读“精通hibernate.pdf”这本书的电子版...

    私塾在线Hibernate4教程(上下部共241页)

    Hibernate4是Hibernate框架的第四个主要版本,它在之前的版本基础上进行了优化和增强,提供了更高效、更灵活的数据访问解决方案。 该教程首先会介绍Hibernate的基础概念,包括ORM(对象关系映射)的基本原理,它是...

    ssh_inte2模板常用方法&延迟加载问题

    在实体映射文件中,将懒加载属性改为fetch="join",或者在HQL/JPQL查询中使用JOIN FETCH。 4. **使用代理对象**:可以考虑在业务逻辑中,先检查对象是否已经被初始化,如果是代理对象,尝试触发加载,例如使用...

    Hibernate电子版及源码

    5. 性能优化:学习如何使用缓存提升性能,了解查询优化、懒加载和立即加载的策略。 6. 错误调试:学会识别并解决常见的Hibernate错误,如 LazyInitializationException、StaleObjectStateException 等。 总之,...

    hibernate开发指南

    7. **Cascading与Lazy Loading**:解释实体之间的级联操作和延迟加载机制,以及如何优化性能和避免懒加载问题。 8. **实体关系模型**:讲解多对一、一对多、多对多关系的建立和处理,以及自关联和双向关联的实现。 ...

    Struts 2+Hibernate+Spring整合开发技术详解 6~11章

    在这一部分,可能会介绍实体类的定义、持久化、事务管理,以及HQL(Hibernate Query Language)和Criteria API的使用,还有如何解决懒加载和级联操作的问题。 3. **Spring 框架**:Spring 提供了全面的依赖注入(DI...

    Spring+hibernate学生在线选课系统

    Spring是一个开源的Java应用框架,它提供了全面的企业级应用程序开发解决方案,包括依赖注入(Dependency Injection,DI)、面向切面编程(Aspect-Oriented Programming,AOP)以及众多的模块,如Spring MVC、Spring...

Global site tag (gtag.js) - Google Analytics