`
neeleon
  • 浏览: 186269 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate入门(九)关联关系中的高级应用_概述关联关系中的懒加载

阅读更多

5. 概述关联关系中的懒加载:

(1) 一对一中的懒加载 :必需要同时满足三个条件才能实现懒加载:即在<one-to-ont> 元素中配置lazy!=false( 即是为trueproxy);constrained=true;fetch=select , 但在主表中不会有懒加载,因为主表不能满足constrained=true; 其实在主外键关联的“一对一“关联关系中,我们判断主表和从表也是从是否配置“constrained “来判断:因为constrained 的配置只会在从表中出现。从上面的分析中可以得知:查询主表永不会使用懒加载,查询从表可选择懒加载。 下面再结合fethch 来分析查询从对象时的懒加载:

 

fetch=join

fetch=select

lazy=true

由于采取的是join 连接查询,所以会一次关联所有的表查出所有数据,这样懒加载失效。

懒加载有效,实际查询从对象发展时,才去连接数据库。

lazy=false

false 意为不使用懒加载。

lazy=proxy

默认设置:使用代理实现懒加载。

提示:fetch 的意思是“通过什么方式抓取”,lazy 的意思是“什么时候抓取”。“抓取”

意为“获得数据,连接数据库”。 其实在“一对一”中使用懒加载对性能提升不多大的作用。

分析“查询主对象不能使用懒加”:当我们要想获取一个主对象时,仅从查询主表是不能判断出是否有从对象,比如我们在查询主表获取Person 对象时,不能从主表中查出是否有有“身份证号“,这样我们便不能正确设置Person 对象的身份证属性,所以hibernate 采取了连接查询,这也就是为什么主对象不能使用懒加载的原因。但是查询从对象可使用懒加载,原因如下:当我们通过查询从表获知从对象时,可以在从表的主外键中查询这个身份证号是否有Person 对象对应,如果没有,设它的person 属性为null, 如果有我们放置一个代理,当要真正查询时,便通过这个代理来查询。

2 )其它关联关系使用懒加载的条件 :在实配置文件中的“关联关系配置 配置元素中配置时满足以下两个条件:lazy!=falsefetch=select

3 )强调 :能够懒加载的对象都是被必定过的代理对象,当相关联的session 没有关闭时,访问这些懒加载对象(代理对象)的属性会初始化这些代理(便getIdgetClass 除外)对象,当相关的session 关闭后,再访问懒加载对象将会出现异常“ could not initialize proxy - no Session ”。

4 )灵活选择:在查询方法是我们有时候希望使用代理懒加载,但有时候我们可能又要具体查询出数据。我们可以这样做来灵活选择:

public Object query( int id, boolean signLazy ){

    ....

if(signLady)

    Hibernate.initialize( 代理对象);

说明:为true, 则会初始化代理,连接数据库,且在此方法调用完成后得到的对象是可以进行有关此对象的属性访问得。为false ,则不会去真正连接数据库,只是为了建立起某种关联关系服务

....

}

(5) 简单的属性也可以使用懒加载,但效果不大,除非是用在大的文本段。

分享到:
评论

相关推荐

    hibernate入门与概述

    【hibernate入门与概述】 Hibernate 是一个流行的Java对象关系映射(ORM)框架,它允许开发者使用面向对象的方式操作数据库,将Java类与数据库表进行映射,从而简化数据库操作。本文主要涵盖以下几个核心概念: 1....

    最经典的hibernate教程_从入门到精通_第二篇

    11. 高级主题:包括关联映射(一对一,一对多,多对一,多对多),懒加载,集合映射,以及时间戳和版本字段等。 12. Hibernate与Spring的整合:如果教程深入,可能会涉及如何在Spring框架中集成Hibernate,使用...

    最经典的hibernate教程_从入门到精通(全四篇)

    【hibernate】是Java开发领域中一个非常重要的对象关系映射(ORM)框架,它允许开发者用面向对象的方式操作数据库,从而简化了数据库应用程序的开发。本教程将引导你从零基础开始,逐步深入理解并掌握Hibernate的...

    hibernate教程,hibernate入门

    Hibernate 是一个流行的开源对象关系映射(ORM)框架,它为 Java 应用程序提供了便捷的数据持久化服务。本教程将引导你逐步了解 Hibernate 的基本概念、安装配置以及核心功能,帮助你快速入门。 **一、Hibernate ...

    Hibernate入门(下)

    在本节中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架,以便初学者能够更好地理解和应用它。Hibernate允许开发人员将数据库操作转化为简单的Java对象操作,极大地简化了数据访问层的代码。 一...

    hibernate入门

    **hibernate入门** Hibernate 是一个开放源代码的对象关系映射(ORM)框架,它极大地简化了Java应用程序与数据库之间的交互。这篇文档旨在为初学者提供一个全面的Hibernate入门指南,帮助理解其基本概念和核心功能...

    Hibernate入门

    ### Hibernate入门知识点...以上是关于Hibernate入门的基本知识点介绍,包括了Hibernate的概述、环境搭建、基本操作以及常见的关联映射方式等内容。希望这些内容能帮助初学者快速了解Hibernate的基本用法及其强大之处。

    Hibernate入门(上)笔记.pdf.zip

    【Hibernate入门(上)笔记.pdf】 这篇笔记主要涵盖了Hibernate框架的基础知识,它是Java开发中用于对象关系映射(ORM)的热门工具。Hibernate允许开发者用Java对象来操作数据库,消除了传统的JDBC代码,提高了开发...

    Hibernate入门示例.doc

    【Hibernate入门示例】 Hibernate是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式处理数据库事务。在本文中,我们将深入探讨Hibernate的核心概念,包括配置...

    1.Hibernate入门

    2. **延迟加载**:Hibernate的懒加载策略可以在真正需要时才加载关联对象,避免了无谓的数据加载。 3. **批处理**:通过设置批处理大小,可以一次提交多条SQL语句,提高数据库操作效率。 总之,Hibernate通过ORM...

    Hibernate 入门

    - 本篇概述了Hibernate入门所需了解的关键知识点,从环境搭建到核心概念再到实际应用场景均有涉及。学习Hibernate不仅可以提升开发效率,还能帮助开发者更好地理解ORM框架的工作原理和技术优势。通过上述内容的学习...

    Hibernate经典入门教程

    在Java世界中,Hibernate是一款广受欢迎的对象关系映射(ORM)框架,它极大地简化了数据库操作,让开发者可以使用面向对象的方式来处理数据。本教程旨在为初学者提供一个全面且深入的Hibernate学习路径,帮助大家...

    hibernate入门教程

    **Hibernate入门教程** Hibernate是一个强大的Java对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是数据库层面的细节。本教程将帮助初学者理解Hibernate的核心概念,通过实例...

    hibernate 入门PPT

    - 处理关联:加载关联对象,延迟加载和立即加载的概念,以及级联操作的设置。 8. **缓存机制** - 第一级缓存:Session级别的缓存,了解其默认行为和配置选项。 - 第二级缓存:SessionFactory级别的缓存,如何...

    hibernate_reference使用指南全

    Hibernate 是一个开源的对象关系映射 (ORM) 框架,它为 Java 应用程序提供了一种将 Java 对象映射到关系型数据库表中的机制。本章节将详细介绍如何从零开始创建一个简单的 Hibernate 应用程序。 **1.2 第一个 ...

    hibernate入门示例代码

    Hibernate 支持懒加载(Lazy Loading),即关联的对象不会在加载实体时立即加载,而是在需要时才加载。此外,还可以通过 `@OneToMany`, `@ManyToOne`, `@ManyToMany` 等注解配置级联操作,比如级联保存、更新和删除...

    Hibernate使用——入门

    Hibernate 是一个强大的开源对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。这篇博文将引导你入门Hibernate,理解其基本概念和使用方法。 **1. Hibernate概述** Hibernate 提供了一种在Java...

    hibernate入门文档

    ### Hibernate入门精要 #### Hibernate概述 Hibernate是一个开放源代码的ORM(Object Relational Mapping)框架,用于Java应用中实现数据库操作。它提供了一个高级的数据持久化层,简化了对象和关系型数据库之间的...

Global site tag (gtag.js) - Google Analytics