`

hibernate检索策略总结

 
阅读更多
大致说来,hibernate提供了3中检索策略:

1、立即检索:在<class> , <set> ,和<many-to-one>元素中,”lazy“属性设为false,即立即加载,

2、延迟检索:在<class>元素中,lazy=true;在<set>中,lazy=true或者extra;在<many-to-one>中,lazy为“proxy”或者“no-proxy”。

3、迫切做外连接检索:在<set>和<many-to-one>元素中,fetch=“join”。class中无此属性。

一般来说,立即检索(lazy=false)会加载所有关联对象,并执行其关联语句,有时有必要,有时则没有必要,在性能上比较吃紧,所以一般使用它时,一定要注意使用场景和需求。

延迟检索(lazy=true),不会加载器关联对象,性能较高,但在加载关联对象属性时,会报错。

迫切做外连接(fetch=_)会加载关联对象,并只执行一条关联语句,在特定情况下使用。

在<class> <property> <set>和<many-to-one>中都有lazy属性,他们的默认值依次为:true,false,true,proxy。

下面是几种策略的优缺点的比较,以及各自适用的场合。

检索策略 优点 缺点 优先考虑使用的场合
立即检索 由程序决定加载的对象,可以避免多个select语句,避免去加载不需要访问的关联对象,以此提高检索性能。 (1)select语句数目多(2)可能加载不需要访问的对象,浪费内存空间 (1)类级别(2)应用程序需要立即访问的对象(3)使用了二级缓存
延迟检索 对应用程序完全透明,不管对象处于持久态还是游离态,应用程序都可以方便的从一个对象导航到他的关联对象。
程序访问其关联对象属性时,不能保证其是否在持久化时已经被初始化。

(1)一对多或者多对多关联(2)应用不需要立即访问的对象。
迫切做外连接检索 综合以上两种检索方式的优点。 (1)可能加载不需要访问的关联对象。(2)复杂的数据库表连接会影响性能。 (1)多对一或者一对一关联(2)程序需要立即访问的对象(3)数据库系统有良好的表连接性能

分享到:
评论

相关推荐

    Hibernate的检索策略

    ### Hibernate的检索策略详解 #### 一、概述 在Java持久化框架Hibernate中,检索策略是一种重要的机制,它主要用于控制对象何时以及如何加载到应用程序内存中。合理的检索策略不仅可以提高应用性能,还能简化代码...

    Hibernate知识点总结

    ### Hibernate知识点总结 #### 一、Hibernate概述 ...通过以上内容,我们了解了Hibernate的基本概念、配置步骤、核心类以及查询语言和检索策略等内容,这对于高效地使用Hibernate框架是非常有帮助的。

    hibernate5--4.检索方式及策略

    一、Hibernate检索方式 1. **HQL(Hibernate Query Language)**: HQL是Hibernate提供的面向对象的查询语言,类似于SQL,但它是基于类和对象的。你可以通过HQL来查询、更新和删除对象,而无需关心底层的SQL语法。...

    Hibernate 简单 PPT 总结

    【Hibernate 简单 PPT 总结】 Hibernate 是一个流行的开源对象关系映射(ORM)框架,它简化了Java应用程序对数据库的操作。通过提供一套API和元数据,Hibernate允许开发者将业务对象直接映射到数据库表,从而避免了...

    Hibernate检索方式

    ### Hibernate检索方式详解 #### 一、概述 Hibernate是一个强大的对象关系映射(ORM)框架,它可以将Java对象与数据库表进行映射,使得开发者能够更方便地进行数据的持久化操作。在Hibernate中,提供了多种检索...

    J2EE系统之-hibernate学习总结

    ### J2EE系统之-hibernate学习总结 #### 对象持久化理论 - **对象持久化定义**:将对象中的数据转换存储至外部持久性存储设备的过程,如数据库、磁盘等。 - **对象持久化的原因**: - 内存易失性:断电后数据丢失...

    Hibernate总结

    **三、Hibernate的检索策略** 1. **类级别的检索策略** - **立即检索**(默认):`lazy="true"`,加载对象时立即执行SQL。 - **延迟检索**(`lazy="false"`):不立即执行SQL,返回代理对象。 2. **关联的检索...

    Hibernate学习总结

    学习成长路,Hibernate总结: 1.Hibernate入门优缺点、 2.Hibernate的操作CRUD、 3.主键生成机制、 4.持久化对象的状态、 ...8.Hibernate检索策略(fetch抓取策略)、 9.二级缓存、 10.Hbernate的检索方式(HQL语句)

    J2EE Hibernate-6.ppt

    总结来说,选择合适的检索策略是优化Hibernate应用性能的关键。立即检索策略适合简单场景,延迟检索策略适用于优化内存和减少数据库交互,而迫切左外连接检索策略则在需要一次性加载所有关联数据时发挥作用。开发者...

    Hibernate 二级缓存 总结整理

    **Hibernate 二级缓存总结整理** 在Java的持久化框架中,Hibernate是一个广泛使用的ORM(对象关系映射)工具,它极大地简化了数据库操作。在处理大数据量或高并发的场景下,为了提高性能和减少数据库负载,...

    使用 hibernate-search 实现全文检索及文档管理的例子

    **使用Hibernate Search实现全文检索及文档管理** 在Java开发中,全文检索和文档管理是常见的需求,特别是对于大型的企业级应用。Hibernate Search是Hibernate ORM框架的一个扩展,它提供了对数据库中的对象进行...

    Hibernate实战笔记

    - **Hibernate中的n+1查询问题**:当使用默认的立即检索策略时,Hibernate会在检索一个对象的同时检索其关联的所有对象。例如,在一个`Customer`与多个`Order`的关联关系中,如果数据库中有`n`个客户,则Hibernate将...

    hibernate3 hibernate3

    Hibernate支持多种主键策略,如自动生成(GenerationType.AUTO)、固定值(GenerationType.IDENTITY)等。 4. Session:它是Hibernate的主要工作单元,用于在应用程序和数据库之间建立会话。Session提供了一种透明...

    hibernate大纲

    **Hibernate 框架概述** Hibernate 是一个开源的 Java 库,主要用于简化对象关系映射(ORM)的任务,使得开发者可以使用 Java 对象来操作数据库,而无需编写大量的 SQL 语句。它允许我们将数据库中的表格与 Java 类...

    hibernate Search总结

    此外,为了优化性能,Hibernate Search还提供了高级特性,如倒排索引、分词器选择、过滤器设置、评分策略等。通过这些手段,开发者可以进一步定制检索行为,满足特定的应用场景需求。 总的来说,Hibernate Search是...

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

    **Hibernate开发各类项目的技术总结** Hibernate,作为Java领域的一个强大对象关系映射(ORM)框架,极大地简化了数据库操作,让开发者可以专注于业务逻辑而非繁琐的SQL语句。在我一年半的开发经验中,我逐渐积累了...

    hibernate相关插件全集

    这些扩展使得Hibernate在应对特定需求时更加灵活,比如通过Hibernate Search,开发者可以轻松地在数据库中实现Lucene搜索引擎的功能,进行复杂的全文检索。 总结来说,这些压缩包中的资源对于使用Eclipse进行...

    Hibernate3.6

    总结起来,Hibernate 3.6 作为一款成熟的 ORM 框架,通过对象化的数据库操作方式,极大地提升了 Java 应用的开发效率,同时也提供了丰富的功能和优化选项,帮助开发者更好地应对复杂的数据访问需求。

Global site tag (gtag.js) - Google Analytics