`

hibernate懒加载原理

 
阅读更多
懒加载的意思是查询的时候不会立刻访问数据库,而返回的是代理对象,当真正去使用对象字段的时候才会访问数据库。

load(Object, Serializable)前提实体类不能是final的。根据id查询 。查询返回的是代理对象,不会立刻访问数据库,是懒加载的。当真正去使用对象的时候才会访问数据库。
用load的时候会发现不会打印出查询语句,而使用get的时候会打印出查询语句。
使用load时如果在session关闭之后在查询此对象,会报异常:could not initialize proxy - no Session。处理办法:在session关闭之前初始化一下查询出来的对象:
Hibernate.initialize(user);

使用load可以提高效率,因为刚开始的时候并没有查询数据库。但很少使用。

一、一对一的懒加载分析
一对一的时候,查询主对象时默认不是懒加载。即:查询主对象的时候也会把从对象查询出来。
需要把主对象配制成lazy="true"  constrained="true"  fetch="select"。此时查询主对象的时候就不会查询从对象,从而实现了懒加载。
一对一的时候,查询从对象的是偶默认是懒加载。即:查询从对象的时候不会把主对象查询出来。

二、一对多的懒加载分析
一对多的时候,查询主对象时默认是懒加载。即:查询主对象的时候不会把从对象查询出来。
一对多的时候,查询从对象时默认是懒加载。即:查询从对象的时候不会把主对象查询出来。
需要配置主对象中的set集合 lazy="false" 这样就配置成是不懒加载了。或者配置抓取方式fetch="join"也可以变成不懒加载。

三、多对一的懒加载分析
多对一的时候,查询主对象时默认是懒加载。即:查询主对象的时候不会把从对象查询出来。
多对一的时候,查询从对象时默认是懒加载。即:查询从对象的时候不会把主对象查询出来。
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    hibernate懒加载策略.doc

    1. **懒加载的实现原理** - Hibernate通过在映射配置文件中设置`lazy="true"`来启用实体对象的懒加载。例如,在上述配置中,`<class>`标签的`lazy`属性设为`true`,表示User实体将采用懒加载。 - 当使用`session....

    hibernate 延迟加载深入剖析

    ##### 2.2 Hibernate中的延迟加载实现原理 在Hibernate中,延迟加载是通过代理模式实现的。当Hibernate加载一个实体时,默认不会立即加载其关联的实体或集合属性。相反,它会创建一个代理对象来表示这些属性。当...

    Hibernate实现原理模拟

    **Hibernate实现原理模拟** 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本教程将通过模拟Hibernate的实现原理,帮助开发者深入理解其工作方式,以便更好地运用到实际...

    懒加载异常解决.docx

    2. **配置不当:** 没有正确配置Hibernate或其他ORM框架来支持懒加载,或者相关的过滤器和拦截器设置不正确。 3. **多线程环境下的问题:** 在多线程环境中,如果对象被多个线程共享,并且在一个线程中关闭了Session...

    SpringBoot-SpringData-懒加载

    **三、懒加载原理** 在JPA中,懒加载是通过代理对象实现的。当实体类中的关联属性被标记为`@ManyToOne`、`@OneToOne`且`fetch = FetchType.LAZY`时,JPA会在运行时创建一个代理对象。当尝试访问这个关联属性时,而...

    Hibernate lazy延迟加载

    **标题**: Hibernate懒加载(Lazy Loading) 在Java的持久化框架Hibernate中,懒加载(Lazy Loading)是一种重要的优化策略,它的核心思想是“延迟加载”或“按需加载”。默认情况下,当一个实体被加载时,并不会...

    hibernate延迟加载技术详细解

    - Hibernate 自动为懒加载属性创建代理类,这些代理类在需要时才加载真实数据。 #### 四、总结 在 Hibernate 中,延迟加载技术是非常关键的一部分,它能够显著提高应用程序的性能。通过合理地选择 Fetching 策略...

    Hibernate延时加载与lazy机制.doc

    Hibernate的延迟加载(Lazy Loading)和懒加载机制(Lazy Initialization)是优化ORM框架性能的重要策略。这个机制的主要目的是提高程序的效率,减少不必要的数据库交互,只在真正需要数据时才去加载它们。以下是对...

    Hibernate原理解析

    Hibernate提供了懒加载机制,允许延迟加载关联的对象,直到真正需要时才从数据库获取,从而提高性能。而立即加载则会在加载主体对象的同时加载其关联的对象。 8. **实体状态** Hibernate将实体的状态分为四种:瞬...

    Hibernate原理

    然而,要充分发挥Hibernate的优势,开发者需要深入理解其核心概念和工作流程,合理设计对象关系映射策略,以及掌握其提供的各种高级特性,如懒加载、缓存管理等,才能构建出高性能、高可维护性的企业级应用。

    理解Hibernate中PO的代理类

    Hibernate懒加载的常见问题之一是代理类初始化问题。如果在持久化上下文(Session)之外或事务结束之后尝试访问懒加载属性,就会引发`LazyInitializationException`异常。为了避免这种情况,需要在配置或代码中妥善...

    Hibernate 工作原理图Hibernate 工作原理图

    - **懒加载**:默认情况下,Hibernate 使用懒加载策略,仅在真正需要时才加载关联的对象。 - **批处理**:通过设置适当的批次大小,可以减少数据库交互次数。 - **查询缓存**:启用查询缓存,可以提高查询性能。 - *...

    hibernate-原理共2页.pdf.zip

    2. **懒加载**:为提高性能,Hibernate允许延迟加载关联对象,只有在真正需要时才加载,降低内存消耗。 **六、性能优化** - 使用批处理更新和检索,通过设置hibernate.jdbc.batch_size参数批量处理SQL。 - 合理...

    hibernate的原理详细解说

    - 懒加载是一种延迟加载策略,只有当确实需要时才会从数据库加载关联对象的数据,从而减少不必要的 I/O 操作。 #### Hibernate的优点 - **减少开发成本**:通过自动化的 SQL 生成和对象映射,大大减少了手工编写 ...

    Hibernate原理与应用 ppt

    在"Hibernate 原理与应用 ppt"中,主要讲解了Hibernate的基本概念、安装配置、CURD操作、关联映射、继承映射、懒加载、HQL和Criteria查询、缓存管理、事务处理以及最佳实践和与JPA的集成。 **安装配置** 在开始使用...

    Hibernate框架ORM的实现原理

    Hibernate不仅支持传统的CRUD操作,还提供了缓存机制、事件监听器、懒加载等特性,大大提高了应用的性能和可维护性。 #### 三、ORM的实现原理 ORM的核心在于**映射**,即将数据库表和Java对象之间的关系进行定义,...

    hibernate学习资料大全

    理解并合理运用懒加载,可以避免内存溢出。 10. **性能优化**: Hibernate 提供了多种优化手段,如批处理、预加载、缓存配置等,学习如何根据项目需求进行优化,可以显著提高系统性能。 以上只是压缩包中部分可能...

    Hibernate 经典例子全

    通过这些实例,学习者将能深入理解Hibernate的工作原理,并掌握如何在实际项目中运用。对于初学者来说,这些例子提供了宝贵的实践机会,而对于有经验的开发者,它们可以帮助巩固理论知识并探索更高级的用法。

    hibernate一键休眠,SDK程式源码

    《Hibernate SDK源码解析与应用》 ...一键休眠的实现,实际上是Hibernate懒加载机制的体现,是提高程序效率的有效策略。对于Java开发者来说,深入理解并熟练运用Hibernate,能够极大地提升开发效率和项目质量。

    hibernate在集合上的lazy策略

    这篇文章可能详细解释了Hibernate在集合懒加载方面的实现方式以及其背后的原理。 懒加载的主要目的是提高应用性能,因为并非每次获取实体时都需要其关联的所有数据。例如,一个用户实体可能关联着多个订单,如果在...

Global site tag (gtag.js) - Google Analytics