Hibernate提供了3种检索策略:
1.立即检索策略
2.延迟策略
3.迫切连接检索
立即检索:
所谓立即检索就是立即装载和初始化检索方法指定的对象,即使Session关闭了,依然可以被正常访问.立即检索策略的启用是通过在映射配置文件中将lazy属性值得设置为"false"来实现的.在Hibernate3.0中lazy的默认值为"true"(延迟检索),如果要启用立即检索策略,就必须手动将lazy设置为"false".
在ORM映射文件的<class>标签中设置lazy属性则表示该持久化类启用何种检索策略,如lazy="false"(立即检索)或lazy="true"(延迟检索).在类级别上,一般启用立即检索策略,因为在加载了持久化对象后会立即访问它.
在ORM映射文件的<set>标签中设置lazy属性则表示对该持久化类的关联对象启用何种检索策略,如lazy="false"(立即检索)lazy="true"(延迟检索).在类关联级别上,一般启用延迟检索策略,因为在加载了持久化对象后大多不会立即访问其关联对象,况且当关联对象数量巨大时,将其装载入内存开销也很大.为了减少查询次数,可以采用Hibernate的批量检索功能,即在<set>标签上设置batch-size属性值设定批量大小.
延迟检索:
延迟检索是Hibernate3.0默认的检索策略,所谓延迟检索就是等到访问的时候才装载和初始化指定的对象.如果在Session实例关闭之前没有初始化延迟检索出来的对象,Session实例关闭后再访问时,就会抛出异常,因此启用了延迟检索策略后,在访问指定对象前应确保该对象已被成功初始化.
在ORM映射文件的<class>标签设置lazy="true"则表示对该持久化类启用延迟检索策略,在<set>标签中设置lazy="true"则表示对该持久化类的关联对象启用延迟检索策略.
为了确保延迟检索的对象在Session关闭后仍然能被正常访问,可以使用Hibernate的isInitialized(Object obj)
用于判断某对象是否被初始化,再用initialize(Object obj)对指定的对象进行初始化处理.
迫切左外检索连接检索:
迫切左外连接检索策略就是充分利用SQL的外连接查询功能,减少Select语句的数目,提高检索效率.在Hibernate中若要启用迫切左外连接检索策略,只需要将所属标签的outer-join属性设置为"true"即可.
分享到:
相关推荐
标题:“HIBERNATE检索策略” 描述:本文深入解析了HIBERNATE的检索策略,为读者提供了一条清晰的学习路径,重点分析了HIBERNATE中的抓取策略及其应用场景,帮助开发者更有效地管理和优化数据加载过程。 在...
【Hibernate检索策略】 Hibernate提供三种主要的检索策略:立即检索、延迟检索和迫切左外连接检索。 1. **立即检索**:这种策略将立即加载关联的对象,无论对象是持久化状态还是游离状态。优点是应用程序可以方便...
一、Hibernate检索方式 1. **HQL(Hibernate Query Language)**: HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但它是基于类和对象的。你可以通过HQL来查询、更新和删除对象,而无需关心底层的SQL语法。...
1. **Hibernate检索策略**: - **立即检索(Eager Fetching)**:优点在于透明度高,方便导航关联对象,但可能导致过多的SELECT语句和内存浪费。 - **延迟检索(Lazy Fetching)**:应用程序可以根据需要决定何时...
SSH笔记主要涵盖了Spring、Struts和...SSHnote_Retrieval文件可能包含的是关于SSH框架特别是Hibernate检索策略的详细示例代码、配置文件或教程,通过阅读和实践这些内容,可以帮助开发者深入理解和应用上述知识。
3. **Hibernate检索策略**:包括“立即加载”和“延迟加载”,可以根据需求选择何时加载关联的对象。 4. **类型系统增强**:增加了对枚举类型的支持,以及更加灵活的类型转换机制。 5. **JPA支持**:Hibernate 3.2...
本教程将深入探讨"day36-hibernate检索和优化 02-Hibernate检索方式:简单查询及别名查询"的主题,通过源码分析和实际工具的应用,来提升数据库查询的效率。 首先,我们了解Hibernate的检索方式。在Hibernate中,...
- 高级特性: Criteria API、Hibernate检索策略、事件监听器、拦截器 - 性能调优和最佳实践 - 实战案例分析 通过阅读这些资料,你将能够掌握Hibernate的基本操作和进阶技巧,从而高效地进行Java ORM开发。在实践...
3. **Hibernate Search**:作为Hibernate的一个扩展,Hibernate Search提供了基于Lucene的全文检索功能,使得在数据库中的数据可以被快速、精确地搜索。 **二、集成Hibernate Search** 1. **配置依赖**:首先,你...
学习成长路,Hibernate总结: 1.Hibernate入门优缺点、 2.Hibernate的操作CRUD、 3.主键生成机制、 4.持久化对象的状态、 ...8.Hibernate检索策略(fetch抓取策略)、 9.二级缓存、 10.Hbernate的检索方式(HQL语句)
### Hibernate检索方式详解 #### 一、概述 Hibernate是一个强大的对象关系映射(ORM)框架,它可以将Java对象与数据库表进行映射,使得开发者能够更方便地进行数据的持久化操作。在Hibernate中,提供了多种检索...
### Hibernate基础:注解开发与检索 #### 一、Hibernate注解开发概述 **Hibernate**是一种流行的Java持久层框架,提供了对象关系映射(ORM)的功能,使得Java开发者能够更高效地进行数据库操作。注解作为Java SE 5...
hibernate3数据检索、抓取策略 、 注解的使用
《J2EE Hibernate-6.ppt》探讨了Hibernate在J2EE环境中的检索策略,主要涉及立即检索策略、延迟检索策略以及迫切左外连接检索策略。 1. **立即检索策略**: 立即检索策略是Hibernate默认的检索方式。在处理一对多...
Hibernate3对象关系映射、操纵持久化对象、Hibernate相关映射、Hibernate检索策略、Hibernate检索方式、Hibernate高级配置、Java语言的反射机制、iBATIS原理及使用;Spring2概述、bean和BeanFactory等。 通过上述...
- **Hibernate中的n+1查询问题**:当使用默认的立即检索策略时,Hibernate会在检索一个对象的同时检索其关联的所有对象。例如,在一个`Customer`与多个`Order`的关联关系中,如果数据库中有`n`个客户,则Hibernate将...